AndroidでRetrofitを使用してマルチパート形式でビットマップを送信する方法


  1. ビットマップをマルチパート形式で送信するために、まずRetrofitの依存関係をプロジェクトに追加します。以下はbuild.gradleファイルの例です。
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'
  1. 送信するビットマップを準備します。例えば、以下のようにビットマップを取得することができます。
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
  1. Retrofitのインスタンスを作成します。
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
Retrofit.Builder builder = new Retrofit.Builder()
        .baseUrl(BASE_URL)
        .client(httpClient.build())
        .addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.build();
  1. APIインターフェースを作成します。マルチパート形式のリクエストを送信するために、@Multipartアノテーションと@Partアノテーションを使用します。
public interface MyApi {
    @Multipart
    @POST("upload")
    Call<ResponseBody> uploadImage(@Part MultipartBody.Part image);
}
  1. ビットマップをマルチパートの一部としてリクエストに追加します。
File file = createTempFile(bitmap);
RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);
MultipartBody.Part imagePart = MultipartBody.Part.createFormData("image", file.getName(), requestBody);
MyApi myApi = retrofit.create(MyApi.class);
Call<ResponseBody> call = myApi.uploadImage(imagePart);
call.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
        // レスポンスの処理
    }
    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) {
        // エラーの処理
    }
});

これで、Androidアプリでビットマップをマルチパート形式で送信することができます。必要に応じて、APIエンドポイントやリクエストボディの詳細をカスタマイズすることもできます。以上が、AndroidでRetrofitを使用してマルチパート形式でビットマップを送信する方法の概要です。