2015-11-13 14 views
5

Ho problemi con l'invio di multipartRequest al server.invia multipart con file utilizzando il 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); 

problema:

richiesta corpo è vuoto, quando è venuto a server di

+0

Avete provato con 'TypedFile'? –

+0

in Retrofit 2.0 –

+0

aggiornamento: 2.0.0-beta1 non supporta TypedFile = ( – kadik

risposta

1

Aggiornamento

Uploading files with Retorfit 2 and Multipart

originale, fuori tema risposta

http://www.codejava.net/java-se/networking/upload-files-by-sending-multipart-request-programmatically Ecco un buon articolo con codice che invia multipart. Questo ha funzionato per me.

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

Ma non sta utilizzando Retrofit 2.0.0-beta 1. – EpicPandaForce

+0

Grazie! Ma ho bisogno solo di Retrfil, e la versione è 2.0.0 -beta1! – kadik

0

In primo luogo tutto, fanno si sta cercando inviare il mediaType "application/json" come @Multpart, se si desidera inviare il multpartfile in modo da fare si ha bisogno quarantina di cambiamento nel codice.

Qualcosa di simile a questo:

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

E il cambiamento chiamata di metodo a questo:

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