使用HttpClient4,post提交multipart/form-data数据
来源:互联网 发布:js。push Array[0] 编辑:程序博客网 时间:2024/06/08 16:04
问题由来:
在Vert.x的项目中,进行公众号开发的时候,发现回复用户图片的时候需要先上传图片,获取一个media_id,然后拿着这个media_id去发送数据。
问题是,Vert.x的vertx-web-client不提供表单文件上传(form-data)方式post请求。
于是,只能找一个HttpClient方法。发现组装一个这样的请求,并不简单
解决方案:
用HttpClient4可实现的,下面看看实现方法:
于是有代码:
HttpClient httpClient = new DefaultHttpClient();
发现DefaultHttpClient过时了,参考:DefaultHttpClient()过时, 官网api查看
换成:
HttpClient httpClient = HttpClients.createDefault();
所有代码如下:
String postUrl = "https://" + Constants.WX_INTERFACE_HOST + "/cgi-bin/media/upload?access_token=" + accessToken + "&type=" + type;HttpClient httpClient = HttpClients.createDefault();File file = new File("riven.jpg");if (file == null || !file.exists()) { throw new FileNotFoundException();}MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();multipartEntityBuilder .addBinaryBody("media", file) .setMode(HttpMultipartMode.RFC6532);HttpPost httpPost = new HttpPost(postUrl);httpPost.setEntity(multipartEntityBuilder.build());httpPost.setHeader("Content-Type", ContentType.MULTIPART_FORM_DATA.toString());HttpResponse httpResponse = httpClient.execute(httpPost);HttpEntity httpEntity = httpResponse.getEntity();String content = EntityUtils.toString(httpEntity);System.out.println(content);
其中,之前版本的MultipartEntity也过时了,HttpClient4.5采用了MultipartEntityBuilder方法,可以看到“Fluent”的影子.
为了加深对Multipart/form-data的了解,放上一个链接:Multipart/form-data上传详解
现在就是缺少了异步的方式,如果找到了异步请求的方法,我再贴到这里补充。
6 0
- 使用HttpClient4,post提交multipart/form-data数据
- 使用multipart form-data方式post数据到服务器
- form enctype:"multipart/form-data",method:"post" 提交表单,后台获取不到数据
- 提交multipart/form-data类型数据
- Multipart/form-data POST
- multipart/form-data post 方法提交表单,后台获取不到数据
- 使用HttpWebRequest用Post提交MultiPart数据
- HttpWebRequest post "multipart/form-data"类型的web数据
- post数据丢失问题 enctype="multipart/form-data"
- Http multipart/form-data多参数Post方式上传数据
- c# 模拟post发送 multipart/form-data,json格式数据
- Android之提交multipart/form-data类型数据
- HttpClient:模拟表单提交文件,发送multipart/form-data数据
- python使用requests库提交multipart/form-data请求
- Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form me
- java 用 post multipart/form-data
- Multipart/form-data POST文件上传详解
- Multipart/form-data POST文件上传详解
- lua脚本语言学习
- 前端框架Vue(10)——vuex 状态管理
- 陶陶摘苹果
- weasis调节窗位相关代码分析
- Zstack之RSSI信号值获取以及显示
- 使用HttpClient4,post提交multipart/form-data数据
- HashTable深入理解
- centos tftp配置
- 5.10 JLL实习日志-实现upload 功能实现
- 卡特兰数(Catalan数)
- hadoop
- Policy Reuse
- Linux 源码包和RPM包的区别
- jsp设置