Creating a proper MultipartBuilder Http Request with OKHttp

烂漫一生 提交于 2019-12-01 00:19:56

This worked for me using okHttp3:

            OkHttpClient client = new OkHttpClient();
            File file = new File(payload);

            RequestBody formBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("file", "image.jpg",
                            RequestBody.create(MediaType.parse("image/jpg"), file))

                    .build();

            Request request = new Request.Builder().url(url).post(formBody).build();

            Response response = client.newCall(request).execute();
            if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

Uploading file in multipart using OkHttp

private static final String IMGUR_CLIENT_ID = "...";
private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");

private final OkHttpClient client = new OkHttpClient();

public void run() throws Exception {
  // Use the imgur image upload API as documented at https://api.imgur.com/endpoints/image
  RequestBody requestBody = new MultipartBuilder()
      .type(MultipartBuilder.FORM)
      .addPart(
          Headers.of("Content-Disposition", "form-data; name=\"title\""),
          RequestBody.create(null, "Square Logo"))
      .addPart(
          Headers.of("Content-Disposition", "form-data; name=\"image\""),
          RequestBody.create(MEDIA_TYPE_PNG, new File("website/static/logo-square.png")))
      .build();

  Request request = new Request.Builder()
      .header("Authorization", "Client-ID " + IMGUR_CLIENT_ID)
      .url("https://api.imgur.com/3/image")
      .post(requestBody)
      .build();

  Response response = client.newCall(request).execute();
  if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

  System.out.println(response.body().string());
}
Suresh Maidaragi

I modified Dr. Enemy's answer:

 MultipartBody.Builder builder =new MultipartBody.Builder().setType(MultipartBody.FORM);

for (Object aMData : dataClass.getData().entrySet()) {
        Map.Entry mapEntry = (Map.Entry) aMData;
        String keyValue = (String) mapEntry.getKey();
        String value = (String) mapEntry.getValue();
        builder.addPart(keyValue, value);
}

for (DataPackage dataPackage : dataClass.getDataPackages()) {
        builder.addPart("upfile[]", dataPackage.getFile());
}

Start adding the formDataPart to builder and at end create RequestBody

RequestBody requestBody = builder.build();

you can perform above actions with

 compile 'com.squareup.okhttp3:okhttp:3.4.1'
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!