HttpClient4 post上傳文件, struts2 action接收

        之前寫了一個Struts2文件上傳的Action,可以編寫一個jsp上傳頁面來測試這個Action,我們也可以編寫一個簡單的客戶端來測試上傳的Action。利用HttpClient能夠方便的實現這個效果,具體代碼如下:

        TestUpload.java

package com.figo.test;

import java.io.File;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class TestUpload {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		HttpClient httpclient = new DefaultHttpClient();
		try {
			HttpPost httppost = new HttpPost(
					"http://localhost:8080/Upload/fileUpload!execute");

			FileBody bin = new FileBody(new File("D:\\Wangyf15\\sign.txt"));
			MultipartEntity reqEntity = new MultipartEntity();
			reqEntity.addPart("upload", bin);// upload爲請求後臺的File upload屬性

			httppost.setEntity(reqEntity);
			HttpResponse response = httpclient.execute(httppost);
			int statusCode = response.getStatusLine().getStatusCode();
			if (statusCode == HttpStatus.SC_OK) {
				HttpEntity resEntity = response.getEntity();
				// httpclient自帶的工具類讀取返回數據
				System.out.println(EntityUtils.toString(resEntity));
				EntityUtils.consume(resEntity);
			}
		} catch (Exception e) {
			e.printStackTrace();

		} finally {
			try {
				httpclient.getConnectionManager().shutdown();
			} catch (Exception ignore) {
			}
		}
	}
}
        這樣比人工構造http post簡單很多,HttpClient還有很多強大的能夠,有待於繼續深入研究。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章