公司用到了文件上传的功能。可以通过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) {
}
}
}
}