我正在尝试使用 okhttp 中的多部分请求上传文件。 使用以下代码。
public static Boolean uploadFile(String serverURL, File file) {
try {
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("file", file.getName(),
RequestBody.create(MediaType.parse("text/csv"), file))
.addFormDataPart("some-field", "some-value")
.build();
Request request = new Request.Builder()
.url(serverURL)
.post(requestBody)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
// Handle the error
}
@Override
public void onResponse(Response response) throws IOException {
if (!response.isSuccessful()) {
// Handle the error
}
// Upload successful
}
});
return true;
} catch (Exception ex) {
// Handle the error
}
return false;
}
这是工作文件。
我的问题是 - 我还想在正文参数中发送一些键值对,但这在请求中造成了问题。
我正在使用以下代码在多部分请求中附加键值正文参数。
FormBody.Builder formBodyBuilder = new FormBody.Builder();
formBodyBuilder.add("name", "Mac");
requestBody.addPart(formBodyBuilder.build());
但它正在制造问题。 任何帮助将不胜感激。谢谢
最佳答案
我正在使用 Okhttp3 执行此操作并且工作正常:
MediaType MEDIA_TYPE = MediaType.parse(MIME_TYPE);
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("type", stringsToPost[0])
...
.addFormDataPart("file", file.getName(), RequestBody.create(MEDIA_TYPE, file));
关于java - 如何在 OKhttp 中使用多部分文件上传请求发送正文参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37384963/