2017-05-31 1 views
2

Ich versuche, eine Datei mit Retrofit 2.0 hochladen. Abgesehen von der Datei, habe ich einige andere Parameter, die mit Formulardaten gesendet werden, die auch einen booleschen Typ enthalten. Meine Anfrage Deklaration ist -Retrofit 2.0 Multipart Anfrage, senden booleschen Typ in Formulardaten einschließlich Datei

@Multipart 
    @POST("/upload/abc") 
    Call<UploadResponse> uploadToServer(@Part("img_file\";filename=\"image") RequestBody file, 
              @Part("access_token") RequestBody sessionKey, 
              @Part("is_final") Boolean isFinal, 
              @Part("sequence_id") Integer sequenceId, 
              @Part("entity_id") RequestBody entityId, 
              @Part("image_type") RequestBody imageType); 

Ich benutze GsonConverterFactory. Ich habe versucht, zwei Ansätze -

(1) Statt @Part("is_final") Boolean isFinal ich @Part("is_final") RequestBody isFinal verwendet und sendet es mit RequestBody.create(MediaType.parse("text/plain"), String.valueOf(true))

(2) Mit @Part("is_final") Boolean isFinal und Senden mit Boolean.TRUE.

In beiden Fällen ist "is_final", das auf der Serverseite empfangen wird, Unicode oder als String anstelle des booleschen Wertes.

Was ist der beste Weg, um dieses

Antwort

0

ich es gemacht erreichen arbeiten -

compile 'com.squareup.retrofit2:converter-scalars:2.1.0' In der gradle Datei.

Während Nachrüst-Instanz erstellen, fügen Sie

Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl("url") 
       .client(builder.build()) 
       .addConverterFactory(ScalarsConverterFactory.create()) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 

Jetzt können Sie sicher vom Urtyp mit der Bitte senden.

Verwandte Themen