我使用okhttp將文件上傳到我的服務器,並將文件加載到Google文檔查看器中供我的用戶預覽。但是,由於我無法在服務器上找到文件,因此上傳失敗。引發的異常提供以下堆棧跟蹤:java.net.SocketException:連接重置OKHTTP
Cannot setInForeground() - never saw a connection for the pid: 22551
08-08 04:23:37.208 22551-22605/ W/System.err: java.net.SocketException: Connection reset
08-08 04:23:37.330 22551-22551/ W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 22551
08-08 04:23:37.331 22551-22551/ W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 22551
08-08 04:23:39.213 22551-22551/ W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 22551
08-08 04:23:40.672 22551-22551/ W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 22551
08-08 04:23:41.203 22551-22551/ W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 22551
08-08 04:23:52.103 2751-3347/? D/WifiQualifiedNetworkSelector:: Current connection state (true,false,false)
08-08 04:24:04.811 4124-4124/? W/GmsClientEvents: unregisterConnectionCallbacks(): listener [email protected] not found
PORT 80也是開放的。但是,有時上傳失敗一致。大多數時候它工作正常。這是服務器端還是客戶端問題?如果客戶端是它的原因,它是如何工作的某些時候。超時錯誤是問題的原因嗎?我檢查了大或小的文件,但我不知道是什麼導致了這個問題。
這是我上傳的文件代碼:在計算器其他問題討論
try {
File f = new File(selectedFilePath);
String file_path = f.getAbsolutePath();
OkHttpClient client = new OkHttpClient();
RequestBody file_body = RequestBody.create(MediaType.parse(content_type),f);
Log.e("msh", content_type);
RequestBody request_body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("type",content_type)
.addFormDataPart("uploaded_file",file_path.substring(file_path.lastIndexOf("/")+1), file_body)
.build();
Request request = new Request.Builder()
.url("http://fakeurl.com/retrofit_example/save_file.php?neran="+neran)
.post(request_body)
.build();
response = client.newCall(request).execute(); //exception is here
} catch (UnknownHostException e) {
e.printStackTrace();
/*uploadFile(selectedFilePath);*/
upsuccess = false;
} catch (IOException e) {
e.printStackTrace();
upsuccess = false;
} catch (NullPointerException e) {
e.printStackTrace();
/*uploadFile(selectedFilePath);*/
upsuccess = false;
}
if(response!=null) {
if (response.isSuccessful()) {
upsuccess = true;
}
response.body().close();
}
我已經試過一切,但錯誤依然存在。雖然上傳失敗okhttp但其他方法和庫也有上述問題。
其他答案還建議:
- 增加上傳文件大小:我的文件僅僅是55 kb和限制是512 MB
- PHP日誌不顯示上傳任何失敗
UPDATE:我不完全確定,但這個問題通常發生在WIFI有時不與移動互聯網。此外,我注意到有時關閉wifi然後打開似乎解決了問題,但截至目前由於各種原因,我不想在我的應用程序上編程執行此操作,因爲我需要額外的權限。任何人都可以告訴我這是什麼原因?