Android 使用OKhttp上传格式数据中的图像和音频,并提供BadRequest状态400
我使用put请求上传图像,并使用Okhttp将其上传到服务器,该请求与邮递员配合良好,但通过android它给了我错误的请求 我已经实现了这里讨论的方法 请帮我整理一下。。。。提前谢谢Android 使用OKhttp上传格式数据中的图像和音频,并提供BadRequest状态400,android,multipartform-data,okhttp,Android,Multipartform Data,Okhttp,我使用put请求上传图像,并使用Okhttp将其上传到服务器,该请求与邮递员配合良好,但通过android它给了我错误的请求 我已经实现了这里讨论的方法 请帮我整理一下。。。。提前谢谢 public Boolean uploadFile(String serverURL, File file) { OkHttpClient client = new OkHttpClient(); try { RequestBody requestBody = new Mul
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;
}
尝试以下方法重置超时:
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();
到
将日志放在onFailure、onResponse方法的第一个位置,以查看它是否进入该位置。就像Log.i(标记“gotothis”);我调试了代码,在执行了这一行client.newCall(request).enqueue(new Callback(){}之后,它直接返回false。你的意思是当你调用函数uploadFile时它会立即返回false?是的,它会立即返回false。它必须是,因为这段代码是:client.newCall(request).enqueue将异步执行。因此,您必须等待一段时间才能从onFailure或onResponse获得响应。谢谢,但现在我面临错误的请求,请帮助我,请参阅邮递员的附件,这一行。addFormDataPart(“file”,file.getName())应更改为:。addFormDataPart(“imag”,file.getName(),
.addFormDataPart(caseId+"_audio", Audio.getName(),
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();