2016-10-04 7 views
2

@マルチパーティーリクエストを作成すると、各パーツにこれらのデフォルトヘッダー(Content-Transfer-Encoding、Content-Type)が追加されます。android @MultipartのRetrofitでデフォルトヘッダーを削除する

//REQUEST BODY 
--25d35373-d2c3-46a3-969f-f5a1fd5f781a 
Content-Disposition: form-data; name="client_id" 
Content-Transfer-Encoding: binary <-- remove this one 
Content-Type: application/json; charset=UTF-8 <-- remove this one 
Content-Length: 34 
"40ccfee680a844780a41fbe23ea89934" 
// 

注:サーバーにアクセスできないため、サーバーがこれらのヘッダーを受け入れる方法はありません。

答えて

1

あなたはこのようにあなたの自己によってマルチ体を構築することができます(kotlinコードが、同じ考え方のjavaで表現することができる):

val mpart = MultipartBody.Builder() 
      .addFormDataPart("param", paramValue) 
      .addPart(null, someRequestBody).build() // <-- (*) see explanation below 

//thus, service method should looks like this: 
@POST("upload/endpoint") 
fun upload(@Body parts: MultipartBody) 

(*) - これはaddPart(headers: Headers, reqBody: RequestBody)方法であり、あなたがnullを渡すときヘッダーはこれを除いてすべてのヘッダーを削除すると言いますContent-Length:

+0

ありがとう、これは問題を解決しました。 .addPart(null、someRequestBody)は必要ありませんでした。 – user3045026

関連する問題