使用 OKhttp 上传表单数据中的图像和音频给我 BadRequest Status 400
Uploading Image and Audio in form data with OKhttp giving me BadRequest Status 400
我正在使用 put 请求上传图片并使用 Okhttp 到服务器,该请求在邮递员中工作正常,但通过 android 它给了我错误的请求
我已经实现了这里讨论的方法
请帮我解决这个问题....提前致谢
public Boolean uploadFile(String serverURL, File file) {
OkHttpClient client = new OkHttpClient();
try {
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("file", file.getName(),
RequestBody.create(MediaType.parse("image/jpg"), file))
.addFormDataPart(caseId+"_audio", caseId+"_audio",
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();
Request request = new Request.Builder()
.url(serverURL)
.put(requestBody)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
e.printStackTrace();
// Handle the error
}
@Override
public void onResponse(Response response) throws IOException {
if (!response.isSuccessful()) {
response.toString();
// Handle the error
}
// Upload successful
}
});
}catch (Exception ex) {
ex.printStackTrace();
// Handle the error
}
return false;
}
screenshot of the successful upload of image on postman
试试这个来重置超时:
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(60, TimeUnit.SECONDS);
client.setReadTimeout(60, TimeUnit.SECONDS);
嗯,错误出在请求正文中。
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("file", file.getName(),
RequestBody.create(MediaType.parse("image/jpg"), file))
.addFormDataPart(caseId+"_audio", caseId+"_audio",
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();
更改了这一行
.addFormDataPart(caseId+"_audio", caseId+"_audio",
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();
到
.addFormDataPart(caseId+"_audio", Audio.getName(),
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();
我正在使用 put 请求上传图片并使用 Okhttp 到服务器,该请求在邮递员中工作正常,但通过 android 它给了我错误的请求 我已经实现了这里讨论的方法
请帮我解决这个问题....提前致谢
public Boolean uploadFile(String serverURL, File file) {
OkHttpClient client = new OkHttpClient();
try {
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("file", file.getName(),
RequestBody.create(MediaType.parse("image/jpg"), file))
.addFormDataPart(caseId+"_audio", caseId+"_audio",
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();
Request request = new Request.Builder()
.url(serverURL)
.put(requestBody)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
e.printStackTrace();
// Handle the error
}
@Override
public void onResponse(Response response) throws IOException {
if (!response.isSuccessful()) {
response.toString();
// Handle the error
}
// Upload successful
}
});
}catch (Exception ex) {
ex.printStackTrace();
// Handle the error
}
return false;
}
screenshot of the successful upload of image on postman
试试这个来重置超时:
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(60, TimeUnit.SECONDS);
client.setReadTimeout(60, TimeUnit.SECONDS);
嗯,错误出在请求正文中。
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("file", file.getName(),
RequestBody.create(MediaType.parse("image/jpg"), file))
.addFormDataPart(caseId+"_audio", caseId+"_audio",
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();
更改了这一行
.addFormDataPart(caseId+"_audio", caseId+"_audio",
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();
到
.addFormDataPart(caseId+"_audio", Audio.getName(),
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();