我正在使用put请求来上传图像和使用okhttp,该请求与邮递员一起工作,但是通过Android,它给了我不好的请求我已经实施了此处讨论的方法https://stackoverflow.com/a/23784452/9145387
请帮助我对此进行整理。...预先感谢
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;
}
成功上传邮政在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();
to
.addFormDataPart(caseId+"_audio", Audio.getName(),
RequestBody.create(MediaType.parse("audio/*"), Audio))
.build();