使用OKHTTP将图像和音频上传到表单数据中,使我的状态为BadRequest 400



我正在使用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();

最新更新