2017-05-31 13 views
2

retrofit 2.0を使用してファイルをアップロードしようとしています。ファイルとは別に、ブール型も含むフォームデータを送信する他のパラメータはほとんどありません。私のリクエスト宣言は -Retrofit 2.0 Multipart Requestは、ファイルを含むフォームデータにブール型を送信します。

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

私はGsonConverterFactoryを使用しています。 I 2つのアプローチを試みた -

(1)の代わりに@Part("is_final") Boolean isFinal Iの@Part("is_final") RequestBody isFinalを使用し、RequestBody.create(MediaType.parse("text/plain"), String.valueOf(true))

でそれを送信する(2)@Part("is_final") Boolean isFinalを用い、にBoolean.TRUEで送信します。

どちらの場合も、サーバー側で受け取った "is_final"は、Unicodeまたはブール値ではなく文字列です。 Gradleのファイルにcompile 'com.squareup.retrofit2:converter-scalars:2.1.0'を追加

-

何が、私はそれがで働かせたこの

答えて

0

を達成するための最良の方法です。

改造インスタンスを作成する際、今あなたが安全に要求してプリミティブ型を送信することができます

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

を追加します。

関連する問題