Httpclient使用post调用文件上传接口报错500
前言
这两天有小粉丝问我:“Httpclient使用post调用文件上传接口报错500,怎么办呀。”
莫慌来我这就告诉你,”孤单寂寞冷”等你来”撩”我。
正题
打断点发现了错误如下:(是在httpclient写好后提交请求时哦,response除报错。)
HttpResponseProxy{HTTP/1.1 500 Internal Server Error [Server: Apache-Coyote/1.1, Content-Type: text/html;charset=utf-8, Content-Language: en, Content-Length: 7303, Date: Mon, 16 Dec 2019 08:07:11 GMT, Connection: close] ResponseEntityProxy{[Content-Type: text/html;charset=utf-8,Content-Length: 7303,Chunked: false]}}
参数,二进制文件:
解决办法:
查找资料所言哈哈,画蛇添足了哈哈哈哈哈哈哈
部分代码如下:
HttpPost httpPost = new HttpPost(requestUrl);
// 构建MultipartEntityBuilder参数
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setCharset(java.nio.charset.Charset.forName("UTF-8"));
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//加上此行代码解决返回中文乱码问题
builder.addBinaryBody("file", file[0].getInputStream(),ContentType.MULTIPART_FORM_DATA,filename);// 文件流
//builder.addBinaryBody("file", file[i].getInputStream());// 文件流
builder.addTextBody("path", path);
builder.addTextBody("filename", filename);
//TODO不上传图片的话需要设置请求头,如果上传图片的话,默认的就是from-data格式
//builder.setContentType(ContentType.create("multipart/form-data; encoding=utf-8"));
//httpPost.setHeader("Content-Type", "multipart/form-data; encoding=utf-8");
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
HttpClient httpClient = HttpClientBuilder.create().build();
// 发送请求
HttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
String entityStr = EntityUtils.toString(responseEntity);
快去动手试试吧!
最后
-
更多参考精彩博文请看这里:陈永佳的博客
-
喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97572.html