안녕하세요, 저는 PHP 서버에 okhttp3의 다중 요청을 사용하여 jpg 파일을 업로드하려고합니다. 스크립트는 $ _FILES [ "image1"]을 확인하고 HTML 양식에서 올바르게 작동합니다. 아래 코드를 사용하면 서버에서 Null 응답을받습니다.okhttp3 Null Respone 업로드 파일
파일 업로드 부분이 포함 된 마지막 addFormDataPart를 제거하면 image1이 설정되지 않은 서버로부터 응답을받습니다.
편집 * 부울 b = files.get (0) .isFile(); 내 휴대 기기에 저장된 파일은 false를, 드롭 박스의 파일은 true를 반환합니다. 보관 용 파일은 전화에서 올바른 응답 파일을 반환하지만 여전히 null http 응답을 반환합니다. 어떤 제안?
public AsyncHttpPost(String id, String password, List<File> files, OnTaskComplete listener) {
MediaType MEDIA_TYPE_JPG = MediaType.parse("image/jpg");
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(ResponseDTO.TAG_ID, String.valueOf(id))
.addFormDataPart(ResponseDTO.TAG_PASSWORD, password)
.addFormDataPart("image1", "Test.jpg", RequestBody.create(MEDIA_TYPE_JPG, files.get(0)));
mRequestBody = builder.build();
mListener = listener;
}
public AsyncHttpPost() {
}
public void setListener(OnTaskComplete listener){
mListener = listener;
}
@Override
protected String doInBackground(String... params) {
String result = "";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(params[0])
.post(mRequestBody)
.build();
Response response = null;
try {
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(response != null) {
result = response.body().string();
}else{
result = "null";
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}