[英]File upload with postman works but fails with Apache HttpClient
我正在測試系統上使用外部 REST API。 我正在嘗試實現一個上傳路徑,並且我正在使用 Apache HTTPClient。 我使用以下郵遞員配置進行了嘗試,效果很好:
上傳工作正常。
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPut request = new HttpPut("../upload") // placeholder url, not the real one
request.setHeader("Content-type", "multipart/form-data");
request.setHeader(HttpHeaders.AUTHORIZATION, "HEY I AM A TOKEN");
FileBody fileBody = new FileBody(new File("dummy.pdf"), ContentType.create("application/pdf"));
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addPart("file", fileBody);
request.setEntity(builder.build());
CloseableHttpResponse response = httpClient.execute(request);
我總是從其余的 api 中得到一個特定的錯誤:
File could not have been parsed
上傳路徑的文檔中提到了以下細節:
我想我在我的請求中做了這個列表的每一點 - 那么郵遞員請求和我自己的 java http 請求有什么區別?
我想念什么?
編輯:
與 OkHTTP 相同的代碼有效。 仍然不知道為什么它不適用於 Apache HttpClient。
OkHttpClient testClient = new OkHttpClient();
File testfile = new File("dummy.pdf");
RequestBody body = new MultipartBuilder().type(MultipartBuilder.FORM).addFormDataPart("file","dummy.pdf",
RequestBody.create(MediaType.parse("application/pdf"),testfile)).build();
Request testreq = new Request.Builder()
.url("../upload")
.header("Authorization", "HI I AM A TOKEN")
.put(body)
.build();
Response testres = testClient.newCall(testreq).execute();
我不得不刪除這一行
request.setHeader("Content-type", "multipart/form-data");
使其工作。 我真的不知道為什么,所以如果有人能幫我解決這個問題並給出一些解釋,我願意。 目前我很高興,因為它現在有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.