httpclient 4.1 很好的支持了 上传file的功能,下面来看一下具体的代码实现。
package com.whl.httpclient;
import java.io.File; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; 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.entity.mime.content.StringBody; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; public class ClientMultipartFormPost { public static void main(String[] args) throws ClientProtocolException, IOException { HttpClient httpclient = new DefaultHttpClient(); try { HttpPost httppost = new HttpPost("http://localhost:8080/table!uploadFile"); FileBody bin = new FileBody(new File("d:/whlwhlwhl.txt")); StringBody comment = new StringBody("just test"); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("upload", bin);//upload为请求后台的File upload;属性 reqEntity.addPart("str", comment);//str 为请求后台的String str;属性 httppost.setEntity(reqEntity); HttpResponse response = httpclient.execute(httppost); int statusCode = response.getStatusLine().getStatusCode(); if(statusCode == HttpStatus.SC_OK){ HttpEntity resEntity = response.getEntity(); System.out.println(EntityUtils.toString(resEntity));//httpclient自带的工具类读取返回数据 EntityUtils.consume(resEntity); } } finally { try { httpclient.getConnectionManager().shutdown(); } catch (Exception ignore) { } } } }
不过如果遇到上传的文件名是中文的名字的话,该如何解决呢?
求解答?