【发布时间】:2020-03-05 21:43:31
【问题描述】:
我正在尝试使用 Apache API 在 Java 中执行 HTTP Post 请求。
使用 curl 请求看起来像这样
curl https://host/upload
-X POST
-H "Authorization: Bearer xxx"
-H "Content-Type: multipart/form-data"
-H "Accept: application/json"
-F "file=@{PathToImage}" -F "type=file"
虽然在使用 CURL 运行它时可以正常工作,但在使用以下 Java 代码运行它时服务器会返回 500er 结果
final HttpPost httppost = new HttpPost("https://host/upload");
httppost.addHeader("Authorization", "Bearer xxx");
httppost.addHeader("Accept", "application/json");
httppost.addHeader("Content-Type", "multipart/form-data");
final MultipartEntityBuilder builder = MultipartEntityBuilder.create();
final File file = new File("c:\\tmp\\myfile.pdf");
builder.addBinaryBody("file", file);
builder.addTextBody("type", "file");
final HttpEntity entity = builder.build();
httppost.setEntity(entity);
final HttpResponse response = httpclient.execute(httppost);
httpclient.close();
知道我在这里缺少什么吗?
【问题讨论】:
-
尝试使用 addPartBody 而不是 addBinaryBody。
-
尝试删除
httppost.addHeader("Content-Type", "multipart/form-data"); -
@Paul,你不能访问被调用的服务器日志吗?您是否检查了响应正文以了解潜在的错误详细信息?您还可以使用 Fiddler 之类的代理,并比较 CURL 与 Java 生成的请求...