2015-11-13 10 views
5

Ich habe Probleme mit dem Senden von MultipartRequest an den Server.senden Multipart mit Dateien mit Retrofit: 2.0.0-Beta1

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); 

Problem:

Anfrage Körper ist leer, wenn es

+0

Haben Sie versucht, mit 'TypedFile'? –

+0

@RethinavelPillai gibt es keine TypedFile in Retrofit 2.0 –

+0

Nachrüstung: 2.0.0-Beta1 hat nicht unterstützt TypedFile = ( – kadik

Antwort

1

aktualisieren

Uploading files with Retorfit 2 and Multipart

Original-zu-Server kommen, Wegthema Antwort

http://www.codejava.net/java-se/networking/upload-files-by-sending-multipart-request-programmatically Hier ist ein guter Artikel mit Code, der Multipart sendet. Das hat für mich funktioniert.

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

Aber es ist nicht mit Retrofit 2.0.0-beta1. – EpicPandaForce

+0

Danke! Aber ich brauche nur Retrfil, und Version ist 2.0.0-Beta1! – kadik

0

Zunächst alle, tun Sie versuchen, die media „application/json“ als @Multpart senden, wenn Sie die multpartfile senden wollen, so tun Sie ändern Somethings in Ihrem Code benötigt.

Etwas wie folgt aus:

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

und ändern Call-Methode dazu:

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