2015-11-13 33 views
5

我有問題,發送multipartRequest到服務器。使用改裝派多用文件:2.0.0-β1

RequestBody file = RequestBody.create(MediaType.parse("application/json"), myFile); 
     return apiService.updateProfile2(token, file); 


@Multipart 
@POST("/profile/update") 
Call<RegistrationResponse> updateProfile2(@Header(value = "X-AUTH-TOKEN") String toke, @Part(value = "json") RequestBody json); 

問題:

請求體是空的,當它來到服務器

+0

你有沒有試着用'TypedFile'? –

+0

@RethinavelPillai在Retrofit 2.0中沒有TypedFile –

+0

翻新:2.0.0-beta1不支持TypedFile =( – kadik

回答

1

更新

Uploading files with Retorfit 2 and Multipart

原來,偏離主題的答案

http://www.codejava.net/java-se/networking/upload-files-by-sending-multipart-request-programmatically 這是一篇很好的文章,其中包含發送multipart的代碼。這對我有效。

MultipartUtility multipart = new MultipartUtility(requestURL, charset); 

multipart.addHeaderField("User-Agent", "CodeJava"); 
multipart.addHeaderField("Test-Header", "Header-Value"); 

multipart.addFormField("description", "Cool Pictures"); 
multipart.addFormField("keywords", "Java,upload,Spring"); 

multipart.addFilePart("fileUpload", uploadFile1); 
multipart.addFilePart("fileUpload", uploadFile2); 

List<String> response = multipart.finish(); 

System.out.println("SERVER REPLIED:"); 

for (String line : response) { 
    System.out.println(line); 
} 
+0

但它不使用改造 – EpicPandaForce

+0

謝謝你,但我只需要Retrfil,和版本是! 2.0.0 -beta1! – kadik

0

首先,你正試圖發送mediaType的「應用/ JSON」爲@Multpart,如果你想發送multpartfile所以你需要在你的代碼更改出頭。

事情是這樣的:

@Multipart 
    @POST("/profile/update") 
    Call<RegistrationResponse> updateProfile2(
    @Header(value = "X-AUTH-TOKEN") String toke, 
    @Part("myfile\"; filename=\"image.png\" ") RequestBody file); 

而改變調用方法如下:

RequestBody file = RequestBody.create(MediaType.parse("multipart/form-data"), myFile); 
     return apiService.updateProfile2(token, file);