公司用到了文件上传的功能。可以通过org.apache.http文件FileBody作为参数进行传输,如reqEntity.addPart("imgFile", file);HttpClient4 的使用
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(); //BasicHttpParams httpParams = new BasicHttpParams();//注释的代码是其他设置和额外参数 //HttpConnectionParams.setConnectionTimeout(httpParams, 25 * 1000); //HttpConnectionParams.setSoTimeout(httpParams, 25 * 1000); //httpclient = new DefaultHttpClient(httpParams); //CredentialsProvider credsProvider = new BasicCredentialsProvider(); //UsernamePasswordCredentials creds = new UsernamePasswordCredentials("root", "system"); //credsProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), creds); //((DefaultHttpClient) httpclient).setCredentialsProvider(credsProvider); try { //上传文件路径 HttpPost httppost = new HttpPost("http://write.blog.csdn.net/postedit"); FileBody bin = new FileBody(new File("文件路径")); StringBody comment = new StringBody("参数1"); 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) { } } } }