こんにちは、私は、PHPサーバーにokhttp3のマルチパートリクエストを使用してjpgファイルをアップロードしようとしています。スクリプトは$ _FILES ["image1"]をチェックし、HTML形式から正しく動作します。以下のコードを使用すると、サーバーからのヌル応答が得られます。okhttp3 Null Responeアップロードファイル
ファイルアップロード部分を含む最後のaddFormDataPartを削除した場合、image1が設定されていないサーバーからの応答が返されます。
編集*私はブール値b = files.get(0).isFile()を発見しました。モバイルデバイスに保存されているファイルはfalse、Dropboxのファイルはtrueを返します。 Dropboxファイルは電話で正しい応答ファイルを返しますが、まだヌル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;
}