2022-03-18
非同期通信で画像をpost形式で送るには、MultipartBodyオブジェクトを用意します。
画像のurlを取得したりアップロードするときに主に用いられますが、通常使っている
FormBody.Builder()と形式はあまり変わりません。成功時に引数responseの中に画像の名前が格納されます。
試しに20行目のSystem.out.printlnを見れば画像の名前が取得できていると思います。
</pre> 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()); } }); <pre>
一番最初のaddFormDataPartは、画像が送られてきた時にそのurlを返すapiと仮定して書いたので、試す場合はphpなどで
代用するものを作ってください。
以上でMultipartBodyオブジェクトの使い方は終了になります。
変換の時がちょいめんどいな程度で、後は普通のOKHttp通信と変わらないっぽい。