私はこの例外をたくさん検索しましたが、めったに発生しませんが、問題を解決できる関連する答えは見つかりませんでした。HttpURLConnection
を使用してURLからxmlとして応答を取得しています。正常に機能します。しかし時々私はこの例外を受け取ります:Java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)
、次のコードを使用しました。url1はxmlを提供するURLです。
url=new URL(url1);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoInput(true);
urlConnection.connect();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String result, line = reader.readLine();
result = line;
while((line=reader.readLine())!=null)
{
result+=line;
}
System.out.println("Result: "+result);
Put urlConnection.setRequestProperty( "connection"、 "close");を試してください。接続する前に。これにより、デフォルトでオンになっているキープアライブプロパティが無効になります
サーバーと通信しようとしたときにも同様の問題が発生しました。何が起こったのかはまだわかりませんが、問題を解決するために検索で this が見つかりました:
わかりました、答えはそれがサーバーのせいであるということでした-それは各要求の後に接続を閉じなければなりませんでした。 Androidは接続のプールを保持し、古い接続またはそのようなものを使用している可能性があります。とにかく、今では機能します。
この投稿を読んだ後、サーバーで実行されているApache
インスタンスを強制終了し、接続が拒否されたことを電話に確認させ、Apache
を再起動しました。その後、問題は解消されました。お役に立てれば!
私の場合、httpからhttpsに変更し、すべてが正常になりました