Java中使用HttpPost上传文件以及HttpGet进行API…
2019-10-16 07:58:55来源:博客园 阅读 ()
Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)
Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)
一、HttpPost上传文件
public static String getSuffix(final MultipartFile file){
if(file == null || file.getSize() == 0){
return null;
}
String fileName = file.getOriginalFilename();
return fileName.substring(fileName.lastIndexOf(".")+1);
}
public static JSONObject uploadFile(String urlStr, MultipartFile file, String token) throws IOException {
// 后缀
String suffix = getSuffix(file);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost(urlStr);
uploadFile.setHeader("authorization","Bearer " + token);
DecimalFormat df = new DecimalFormat("#.##");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
// HTTP.PLAIN_TEXT_TYPE,HTTP.UTF_8
builder.addTextBody("name", file.getOriginalFilename(), ContentType.create("text/plain", Consts.UTF_8));
builder.addTextBody("size", df.format((double) file.getSize() / 1024), ContentType.TEXT_PLAIN);
builder.addTextBody("suffix", suffix, ContentType.TEXT_PLAIN);
// 把文件加到HTTP的post请求中
// String filepath = "/user/test/123.png"
// File f = new File(filepath);
builder.addBinaryBody(
"file",
file.getInputStream(),
// new FileInputStream(f),
ContentType.APPLICATION_OCTET_STREAM,
file.getOriginalFilename()
);
HttpEntity multipart = builder.build();
uploadFile.setEntity(multipart);
CloseableHttpResponse response = httpClient.execute(uploadFile);
HttpEntity responseEntity = response.getEntity();
String sResponse= EntityUtils.toString(responseEntity, "UTF-8");
JSONObject jsonObject = JSONObject.parseObject(sResponse);
// {"code":1,"data":"7efb19980373dd90f5077576afa7481a","message":""}
// {"code":401,"httpStatus":null,"data":"373656a2-baff-423a-93fb-704f51003509","message":"error"}
return jsonObject;
}
二、HttpGet对API进行Get请求
两种方式:
- 使用在URL中拼接,已经进行过测试
使用URI进行参数构造的方式未进行测试
1、在URL中拼接
CloseableHttpClient httpClient = HttpClients.createDefault();
String urlStr ="http://abc.com/oss/getUrl?id=" + ossFileId;
HttpGet httpGet = new HttpGet(urlStr);
// 使用Oauth2进行权限验证
httpGet.setHeader("authorization","Bearer 34195fa8-00a6-4288-bda9-7d37541c3a39");
CloseableHttpResponse response = httpClient.execute(httpGet);
HttpEntity responseEntity = response.getEntity();
String sResponse= EntityUtils.toString(responseEntity, "UTF-8");
System.out.println(sResponse);
JSONObject jsonObject = JSONObject.parseObject(sResponse);
System.out.println(jsonObject);
2、使用参数的方式
由于GET请求的参数都是拼装在URL地址后方,所以我们要构建一个URL,带参数
CloseableHttpClient httpClient = HttpClients.createDefault();
URIBuilder uriBuilder = new URIBuilder("http://www.baidu.com");
/** 第一种添加参数的形式 */
/*uriBuilder.addParameter("name", "root");
uriBuilder.addParameter("password", "123456");*/
/** 第二种添加参数的形式 */
List<NameValuePair> list = new LinkedList<>();
BasicNameValuePair param1 = new BasicNameValuePair("name", "root");
BasicNameValuePair param2 = new BasicNameValuePair("password", "123456");
list.add(param1);
list.add(param2);
uriBuilder.setParameters(list);
// 根据带参数的URI对象构建GET请求对象
HttpGet httpGet = new HttpGet(uriBuilder.build());
// 使用Oauth2进行权限验证
httpGet.setHeader("authorization","Bearer 34195fa8-00a6-4288-bda9-7d37541c3a39");
CloseableHttpResponse response = httpClient.execute(httpGet);
HttpEntity responseEntity = response.getEntity();
String sResponse= EntityUtils.toString(responseEntity, "UTF-8");
System.out.println(sResponse);
JSONObject jsonObject = JSONObject.parseObject(sResponse);
System.out.println(jsonObject);
原文链接:https://www.cnblogs.com/codeobj/p/11670068.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Bitmap简介
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash