2017-08-07 37 views
0

私は自分のサーバーにファイルをアップロードし、そのファイルをgoogle docsビューアにロードしてユーザーにプレビューするためにokhttpを使用しています。ただし、サーバー上でファイルを見つけることができないため、アップロードが失敗することがあります。例外が発生すると、次のスタックトレースが発生します。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(); 
     } 

を私はstackoverflowの上の他の質問で述べたすべてのものを試してみましたが、エラーが解消されません。アップロードはokhttpで失敗しますが、他の方法やライブラリにも上記の問題があります。私のファイルがちょうど55キロバイトで、制限は、アップロードのために何が表示されない512メガバイト

  • PHPログが
  • を失敗している:

    1. 増加アップロードファイルのサイズを:

      他の回答も提案しました更新:私は完全にはわかりませんが、この問題は通常、モバイルインターネットではなくWIFIで発生することがあります。また、Wi-Fiをオフにしてからオンにすることが問題を解決するように見えることがありましたが、私は余分なアクセス許可が必要になるため、アプリでプログラムでこれをやりたくないさまざまな理由があります。誰でも問題の原因となることはありますか?

    答えて

    0

    okhttpを使用して大きなファイルをサーバーにアップロードすると、「sendto failed:ECONNRESET(ピアによって接続がリセットされました)」という例外が発生しました。私は答えを見つけた。

    アップロードファイルのサイズを制限するのはnginxサーバーの設定です。 ファイル "nginx.conf"を見つけ、 "client_max_body_size"を512M以上に変更してください。

    私の貧しい英語のために申し訳ありませんが、これがあなたを助けることを願っています。

    関連する問題