2017-08-11 81 views
0

我試圖用RestEasy的客戶端將文件發送到HTTP服務器與一些像這樣的代碼:的RESTEasy客戶多交的文件

File source = new File("test.pdf"); 

Client client = ClientBuilder.newClient(); 

MultipartFormDataOutput upload = new MultipartFormDataOutput(); 

upload.addFormData("source", source, MediaType.APPLICATION_OCTET_STREAM_TYPE); 

Entity entity = Entity.entity(upload, MediaType.MULTIPART_FORM_DATA_TYPE) 
Response response = client.target(url).request().post(entity); 

會發生什麼情況是,在HTTP服務器上,我沒有得到的通常的「文件」在請求中(包括內容,名字等),但是像一個名爲「source」的常規POST參數,其文件內容爲其值。 我試過用一些不同的Web服務器,所以問題必須在RESTeasy構建的請求中。

任何幫助?

回答

0

MultipartFormDataOutput表現與HTML表單相同。它將鍵/值對發送到服務器。

如果要上傳MIME郵件,請考慮使用MultipartOutput

+0

您會考慮編寫一個MultipartOutput的用法示例嗎? – DarkCygnus

+0

@DarkCygnus這很簡單。您只需添加您的零件,並讓RESTEasy使用其*輸出提供程序來處理它。你可以在[RESTEasy的JUnit測試](https://github.com/resteasy/Resteasy/blob/master/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/providers) /multipart/MimeMultipartProviderTest.java)。我最近不得不發送'multipart/related'消息,它的工作方式就像一個魅力 - 不幸的是我不允許在這裏發佈任何消息 –