如何在Okhttp中发送图像和“键”“值”数据?

时间:2019-04-02 23:33:01

标签: java android oop android-asynctask okhttp

在我的代码应用程序中,我编写了一种使用FormBody.Builder发送键和值的方法,但是我也需要发送图像。我该怎么办?

我写了这个

_formBuilder.add("id_user","1");
_formBuilder.add("name","David");

然后,我在接收参数的Constructor的{​​{1}}中发送该值:

AsyncTask

1 个答案:

答案 0 :(得分:0)

您可以使用multipart/form-data上载到服务器。首先,使用MultipartBody

创建MultipartBody.Builder
MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder();
multipartBodyBuilder.setType(MultipartBody.FORM);
multipartBodyBuilder.addFormDataPart("key", "value");
MediaType mediaType = MediaType.parse("image/png"); // or "image/jpeg" or any mime type you want
multipartBodyBuilder.addFormDataPart(
        "fileKey",
        "fileName",
        RequestBody.create(mediaType, yourFile)
);

然后将其用作您请求中的发布数据

Request _rbuilder = new Request.Builder()
    .url(url)
    .addHeader("Content-Type",
            "application/json; charset=utf-8"
    )
    .post(multipartBodyBuilder.build())
    .build();