【androidJava】MultipartBodyの使い方

  • 2018年12月21日
  • 2018年12月21日
  • 未分類

今回は、ギャラリーから画像を取得してOKHttpでファイル名をアップロードすることを目的としたコードです。

 

非同期通信で画像をpost形式で送るには、MultipartBodyオブジェクトを用意します。

画像のurlを取得したりアップロードするときに主に用いられますが、通常使っている

FormBody.Builder()と形式はあまり変わりません。成功時に引数responseの中に画像の名前が格納されます。

試しに20行目のSystem.out.printlnを見れば画像の名前が取得できていると思います。

 

OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("active", "fileUpload")
.addFormDataPart("app0", resultUri.getPath(),
                RequestBody.create(MediaType.parse("image/jpeg"), String.valueOf(resultUri)))
        .build();
Request request = new Request.Builder()
        .url("http://fuga/hoge.php")
        .post(requestBody)
        .build();
client.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        e.printStackTrace();
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        System.out.println(response.body().string());
    }
});

一番最初のaddFormDataPartは、画像が送られてきた時にそのurlを返すapiと仮定して書いたので、試す場合はphpなどで

代用するものを作ってください。

どうやって通信前の画像の名前を取得しているかはまた後日に書いていきたいと思います。
>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG