使用HttpClient发送HttpPost请求包含上传本地图片和远程图片的传输实现
来源:互联网 发布:java解析excel跨行 编辑:程序博客网 时间:2024/04/29 22:21
在实际项目中需要在当前系统中模拟浏览器发送一个post请求,正常情况下传文字没多大问题,但是如果带上传文件功能的话,
网上的资料不太好找,好在经过我多方寻找,加上自由发挥,真让我搞出来了。
下面代码为核心代码,
可以上传
File对象,
转换成byte数组类型(String类型Base64编码的信息的图片)
String类型 的数据,
满足了,发送post请求大部分上传需要,每一步都有详细说明,并且都有log打出。希望能帮到需要的人。
需要的包我会放在链接中,解压密码为: nihaocsdn 供大家使用,亲测可用。
点击打开链接
package httpClientRequest;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import org.apache.commons.codec.binary.Base64;import org.apache.commons.lang3.StringUtils;import org.apache.http.HttpEntity;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.ContentType;import org.apache.http.entity.mime.MultipartEntityBuilder;import org.apache.http.entity.mime.content.ByteArrayBody;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.HttpClients;import org.apache.http.util.EntityUtils;public class httpTest {public String start() throws ClientProtocolException, IOException{// 1. 创建上传需要的元素类型// 1.1 装载本地上传图片的文件File imageFile = new File("C:/Intel/test.jpg");FileBody imageFileBody = new FileBody(imageFile);// 1.2 装载经过base64编码的图片的数据String imageBase64Data = "vnweovinsldkjosdfgvndlgkdfgjsdfdfg";ByteArrayBody byteArrayBody = null;if(StringUtils.isNotEmpty(imageBase64Data)){byte[] byteImage = Base64.decodeBase64(imageBase64Data);byteArrayBody = new ByteArrayBody(byteImage,"image_name");}// 1.3 装载上传字符串的对象StringBody name = new StringBody("admin",ContentType.TEXT_PLAIN);System.out.println("装载数据完成");// 2. 将所有需要上传元素打包成HttpEntity对象HttpEntity reqEntity = MultipartEntityBuilder.create().addPart("name", name).addPart("image1",imageFileBody).addPart("image2",byteArrayBody).build();System.out.println("打包数据完成");// 3. 创建HttpPost对象,用于包含信息发送post消息HttpPost httpPost = new HttpPost("http://www.cctv.com");httpPost.setEntity(reqEntity);System.out.println("创建post请求并装载好打包数据");// 4. 创建HttpClient对象,传入httpPost执行发送网络请求的动作CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = httpClient.execute(httpPost);System.out.println("发送post请求并获取结果");// 5. 获取返回的实体内容对象并解析内容HttpEntity resultEntity = response.getEntity();String responseMessage = "";try{System.out.println("开始解析结果");if(resultEntity!=null){InputStream is = resultEntity.getContent();BufferedReader br = new BufferedReader(new InputStreamReader(is));StringBuffer sb = new StringBuffer();String line = "";while((line = br.readLine()) != null){sb.append(line);}responseMessage = sb.toString();System.out.println("解析完成,解析内容为"+ responseMessage);} EntityUtils.consume(resultEntity);}finally{if (null != response){ response.close(); }}return responseMessage;}public static void main(String[] args) throws ClientProtocolException, IOException {httpTest ht = new httpTest();ht.start();}}
阅读全文
0 0
- 使用HttpClient发送HttpPost请求包含上传本地图片和远程图片的传输实现
- Java发送包含网络和本地图片的HTML邮件
- Android中使用HttpPost上传图片和数据
- Java的HttpClient、HttpGet和HttpPost请求
- 利用HTTPClient模块中HttpGet和HttpPost 发送接口请求
- 本地、远程图片上传预览
- Android本地缓存和远程图片获取的实现
- Android本地缓存和远程图片获取的实现
- Android本地缓存和远程图片获取的实现
- HttpClient的简单使用--HttpGET和HttpPost
- 自己实现异步发送请求和图片
- HttpClient的用法(包含httpget和httppost)
- PHP实现本地图片的上传和验证功能
- 网络请求框架----HttpClient的get,post和图片上传服务器
- ckeditor的使用(包含上传图片)
- 关于HttpClient HttpGet和HttpPost 请求的运用
- 实现本地图片预览上传的功能
- android 图片上传,使用 httpclient 的MultipartEntity 上传
- Java初始化顺序
- [POJ1144]题面翻译-割点裸题
- Java compiler level does not match the version of the installed Java project facet.
- bzoj4443: [Scoi2015]小凸玩矩阵(二分+二分图匹配)
- 力学知识
- 使用HttpClient发送HttpPost请求包含上传本地图片和远程图片的传输实现
- myeclipse2017 ci 8 Windows下载地址
- C语言初步-第19讲: 字符数据及字符类型(getchar()的相关说明 )
- 小程序 自定义 循环 动画
- Android实战(橘子娱乐)-首页(第二篇 首页布局与Activity代码)
- H
- node.js重要知识点一
- 在Mac中的PDF文档的页面需要重新排布该如何
- Linux系统性能检测