この問題に数時間苦労した後、私は最後にここでアドバイスを求めることにしました。 私は、アプリケーションでネットワーキングにRetrofit 2を使用します。OkhttpでMultipartBody.PartのContent-Typeを設定できません
@POST(UPLOAD_PHOTO)
@Multipart
Call<UploadPhotoResponse> uploadPhoto(@Header("X-Auth-Token") String token, @Path("post_id") int postId
, @Part("photo\"; filename=\"cover.jpg\"") MultipartBody.Part photo, @Part("photo_thumb\"; filename=\"cover_thumb.jpg\" ") MultipartBody.Part photoThumb);
広告これは、私はそれを呼び出す方法です::画像をアップロードするためのAPIインタフェースでの私の方法はどのように見えるかです
RequestBody photoBody = RequestBody.create(MediaType.parse("image/jpeg"),bytePhoto);
RequestBody thumbBody = RequestBody.create(MediaType.parse("image/jpeg"), byteThumb);
MultipartBody.Part photoPart = MultipartBody.Part.createFormData("photo", photoFile.getName(), photoBody);
MultipartBody.Part thumbPart = MultipartBody.Part.createFormData("photo_thumb", thumbFile.getName(), thumbBody);
Call<UploadPhotoResponse> call = apiService
.uploadPhoto(sessionToken, postId, photoPart, thumbPart);
call.enqueue(new Callback<UploadPhotoResponse>() {
@Override
public void onResponse(Response<UploadPhotoResponse> response, Retrofit retrofit) {
}
@Override
public void onFailure(Throwable t) {
}
});
私の問題は、私は、サーバーからのエラーメッセージが出ていていることであるのため、不正なボディパラメータ。あなたはフィドラーから画面から見ることができるように、各パートのためのいくつかのresonのContent-Typeのは、「アプリケーション/ JSON」に設定されている場合: Request body parameters
私の問題に関連するだけの議論を私は見つけることALBEたMultipart request overriding content-type not working #1433
ですしかし、それはボディ部分ではなく、リクエストヘッダのコンテンツタイプに関するものです。 誰かがOkHttpに似た問題に直面したのかもしれません。なぜなら、この特定の要求に対してこのライブラリから切り換えてexcetpを問題解決できるものがないからです。