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

问题描述 投票:0回答:1

在我的代码应用程序中,我写了一个方法,用FormBody.Builder发送一个键和一个值,但我也需要发送一个图像。我怎样才能做到这一点?

我写了这个

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

然后我将该值发送到接收参数的ConstructorAsyncTask中:

try {
    Request _rbuilder = new Request.Builder()
                        .url(url)
                        .addHeader("Content-Type", "application/json; charset=utf-8")
                        .post(_parameters)
                        .build();
    Response _res= _client.newCall(_rbuilder).execute();
    return _res.body().string();
} catch (Exception ex) {
    Log.i("Error task", ex.toString());
}
java android oop android-asynctask okhttp
1个回答
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();
© www.soinside.com 2019 - 2024. All rights reserved.