使用httpclient-4.5.2以form表单形式上传文件 java
2017-01-13 16:52
531 查看
pom依赖:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.2</version>
</dependency>
java代码:
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.junit.Test;
import com.alibaba.fastjson.JSONObject;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
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
4000
.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
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.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.http.util.CharsetUtils;
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.2</version>
</dependency>
java代码:
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.junit.Test;
import com.alibaba.fastjson.JSONObject;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
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
4000
.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
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.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.http.util.CharsetUtils;
public static void sendFile(Integer id, Integer value, String filePath) throws Exception { HttpClient httpClient = HttpClientBuilder.create().build(); HttpPost httpPost = new HttpPost(postUrl); //加上该header访问会404,不知道原因... //httpPost.setHeader("Content-Type", "multipart/form-data; boundary=-----ZR8KqAYJyI2jPdddL"); FileBody fileBody = new FileBody(new File(filePath)); StringBody stringBody = new StringBody("application/text", Charset.defaultCharset()); JSONObject json = new JSONObject(); json.put("id", item_id.toString()); json.put("value", value.toString()); StringBody contentBody = new StringBody(json.toJSONString(), Charset.defaultCharset()); //以浏览器兼容模式访问,否则就算指定编码格式,中文文件名上传也会乱码 HttpEntity reqEntity = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE) .addPart("file", fileBody) .addPart("type", stringBody) .addPart("data", contentBody).setCharset(CharsetUtils.get("UTF-8")).build(); httpPost.setEntity(reqEntity); HttpResponse response = httpClient.execute(httpPost); if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){ HttpEntity entitys = response.getEntity(); if (entitys != null) { System.out.println(EntityUtils.toString(entitys)); } } httpClient.getConnectionManager().shutdown(); }
相关文章推荐
- httpClient 使用multipart/form-data 类型上传文件及表单
- 使用java的HttpURLconnnection模拟form上传 以及apache httpClient 直接上传文件
- 使用FileUtils进行Java中Form表单上传文件
- Java使用form表单上传文件10大需要注意事项
- HttpClient 4.3.6 使用MultipartEntityBuilder实现类似form表单提交方式的文件上传
- 使用jQuery.form插件实现表单异步提交+上传文件
- 使用httpclient模拟表单上传文件,后台用struts2接收
- 使用jQuery.form插件实现表单异步提交+上传文件
- HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
- httpclient4.3.X post请求上传,将文件封装到请求体中(不以form表单形式)
- httpClient 使用multipart/form-data 类型上传文件及表单
- 使用ajax提交form表单,包括ajax文件上传
- 使用HTML的表单form上传文件,需要考虑的几个问题
- 使用ajax提交form表单,包括ajax文件上传
- java文件流模拟form表单上传文件
- ANDROID使用MULTIPARTENTITYBUILDER实现类似FORM表单提交方式的文件上传
- form表单上传文件使用multipart请求处理
- Android使用MultipartEntityBuilder实现类似form表单提交方式的文件上传
- 使用HttpClient实现文件和其他表单数据的上传
- 表单包含file上传文件提交,使用ajaxSubmint或者ajaxForm 遇到的问题以及解决方法