HttpURLConnection错误(由对等方重置连接)

HttpURLConnection错误(由对等方重置连接),httpurlconnection,Httpurlconnection,问题是: 我在尝试“连接”时出现间歇性但频繁的故障。 下面是代码、调试消息和堆栈跟踪。我看过类似的例子 问题解答,android开发者提供帮助,但找不到 失败的答案 感谢您的帮助 守则: 工作时调试消息: 01-23 11:57:00.029:D/数据(21987):背景 01-23 11:57:00.029:D/Data(21987):connection=com.android.okhttp.internal.http.HttpURLConnectionImpl:http://financ

问题是: 我在尝试“连接”时出现间歇性但频繁的故障。 下面是代码、调试消息和堆栈跟踪。我看过类似的例子 问题解答,android开发者提供帮助,但找不到 失败的答案

感谢您的帮助

守则:

工作时调试消息: 01-23 11:57:00.029:D/数据(21987):背景 01-23 11:57:00.029:D/Data(21987):connection=com.android.okhttp.internal.http.HttpURLConnectionImpl:http://finance.yahoo.com/d/quotes.csv?s=^GSPC+^GSPTSE+^IXIC+^NDX+^TNX&f=snxl1d1t1c1ohgv&ignore=.csv 01-23 11:57:00.549:D/数据(21987):响应代码=200 01-23 11:57:00.549:D/数据(21987):读取开始 01-23 11:57:00.609:D/数据(21987):读取结束 01-23 11:57:00.609:D/数据(21987):onPostExecute启动 01-23 11:57:00.629:D/数据(21987):onPostExecute结束 失败时的调试消息: ============================= 01-23 11:57:03.839:D/数据(21987):背景 01-23 11:57:03.839:D/Data(21987):connection=com.android.okhttp.internal.http.HttpURLConnectionImpl:http://finance.yahoo.com/d/quotes.csv?s=^GSPC+^GSPTSE+^IXIC+^NDX+^TNX&f=snxl1d1t1c1ohgv&ignore=.csv 01-23 11:57:05.939:D/Data(21987):e.getCause()=libcore.io.ErrnoException:recvfrom失败:econreset(由对等方重置连接) 01-23 11:57:05.939:D/Data(21987):e.getMessage()=recvfrom失败:econreset(对等方重置连接) 01-23 11:57:05.979:D/Data(21987):启动后执行 01-23 11:57:06.009:D/Data(21987):onPostExecute结束 打印堆栈跟踪: ============================= 01-23 11:57:05.939:W/System.err(21987):java.net.SocketException:recvfrom失败:econreset(由对等方重置连接) 01-23 11:57:05.949:W/System.err(21987):在libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:545) 01-23 11:57:05.949:W/System.err(21987):位于libcore.io.IoBridge.recvfrom(IoBridge.java:509) 01-23 11:57:05.949:W/System.err(21987):位于java.net.PlainSocketImpl.read(PlainSocketImpl.java:488) 01-23 11:57:05.949:W/System.err(21987):位于java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 01-23 11:57:05.949:W/System.err(21987):位于java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) 01-23 11:57:05.949:W/System.err(21987):位于java.io.InputStream.read(InputStream.java:162) 01-23 11:57:05.949:W/System.err(21987):位于java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142) 01-23 11:57:05.949:W/System.err(21987):位于java.io.BufferedInputStream.read(BufferedInputStream.java:227) 01-23 11:57:05.949:W/System.err(21987):位于com.android.okhttp.internal.Util.readasciline(Util.java:316) 01-23 11:57:05.959:W/System.err(21987):位于com.android.okhttp.internal.http.RawHeaders.fromBytes(RawHeaders.java:308) 01-23 11:57:05.959:W/System.err(21987):位于com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:135) 01-23 11:57:05.959:W/System.err(21987):位于com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:644) 01-23 11:57:05.959:W/System.err(21987):位于com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347) 01-23 11:57:05.959:W/System.err(21987):位于com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296) 01-23 11:57:05.959:W/System.err(21987):位于com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503) 01-23 11:57:05.959:W/System.err(21987):位于com.retepcivorodot.stockcharts.QuoteListFragment$MyAsyncTask.doInBackground(QuoteListFragment.java:949) 01-23 11:57:05.959:W/System.err(21987):位于com.retepcivorodot.stockcharts.QuoteListFragment$MyAsyncTask.doInBackground(QuoteListFragment.java:1) 01-23 11:57:05.959:W/System.err(21987):在android.os.AsyncTask$2.call(AsyncTask.java:288) 01-23 11:57:05.969:W/System.err(21987):位于java.util.concurrent.FutureTask.run(FutureTask.java:237) 01-23 11:57:05.969:W/System.err(21987):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 01-23 11:57:05.969:W/System.err(21987):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 01-23 11:57:05.969:W/System.err(21987):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 01-23 11:57:05.969:W/System.err(21987):位于java.lang.Thread.run(Thread.java:841) 01-23 11:57:05.969:W/System.err(21987):由以下原因引起:libcore.io.ErrnoException:recvfrom失败:econreset(由对等方重置连接) 01-23 11:57:05.979:W/System.err(21987):位于libcore.io.Posix.recvfromBytes(本机方法) 01-23 11:57:05.979:W/System.err(21987):位于libcore.io.Posix.recvfrom(Posix.java:141) 01-23 11:57:05.979:W/System.err(21987):位于libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164) 01-23 11:57:05.979:W/System.err(21987):位于libcore.io.IoBridge.recvfrom(IoBridge.java:506) 01-23 11:57:05.979:W/系统错误(21987):。。。还有21个
我很确定这与你的代码无关,只要你能用一个特定的请求复制它

EconReset表示连接已被服务器关闭(也可以是防火墙等)

有一次,我在50%的请求中遇到了同样的问题,结果发现集群的一侧在虚拟IP映射方面存在硬件缺陷。因此,当负载平衡器决定将请求传递到左侧时,它成功了,而传递到右侧则失败了

试着找出你的请求与成功/失败之间是否存在某种关联。在执行某些请求时,可能有某种应用程序防火墙会断开您的连接。可能是拒绝服务保护

如果成功/失败完全是随机的,那么你的安卓手机和雅虎服务器之间的一个设备可能会坏掉

您可以跟踪从提交请求到
public String doInBackground (String... urlArray) {
String string;
InputStream is = null;
int responseCode = 0;

Log.d("Data", "doInBackground ");
try {
    URL url = new URL(urlArray[0]);
    // Create a new HTTP URL connection
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    Log.d("Data", "connection= " + connection );
    connection.setConnectTimeout(10000);
    connection.setReadTimeout(10000);
    connection.setDoInput(true);
    connection.connect();

    responseCode = connection.getResponseCode();
    Log.d("Data", "responseCode= " + responseCode );
    if (responseCode == HttpURLConnection.HTTP_OK) {
        is = connection.getInputStream();
        int len=50000;
        string = readIt(is, len);
        connection.disconnect();
        is.close();
        return string;
        }
        else {
        connection.disconnect();
        return "File Not Found";
        }
}
catch (IOException e) {
Log.d("Data", "e.getCause()= " + e.getCause() );
Log.d("Data", "e.getMessage()= " + e.getMessage() );
e.printStackTrace();
return null;
}
}
Debug messages when it works: 01-23 11:57:00.029: D/Data(21987): doInBackground 01-23 11:57:00.029: D/Data(21987): connection= com.android.okhttp.internal.http.HttpURLConnectionImpl:http://finance.yahoo.com/d/quotes.csv?s=^GSPC+^GSPTSE+^IXIC+^NDX+^TNX&f=snxl1d1t1c1ohgv&ignore=.csv 01-23 11:57:00.549: D/Data(21987): responseCode= 200 01-23 11:57:00.549: D/Data(21987): readIt start 01-23 11:57:00.609: D/Data(21987): readIt end 01-23 11:57:00.609: D/Data(21987): onPostExecute start 01-23 11:57:00.629: D/Data(21987): onPostExecute end Debug messages when it fails: ============================= 01-23 11:57:03.839: D/Data(21987): doInBackground 01-23 11:57:03.839: D/Data(21987): connection= com.android.okhttp.internal.http.HttpURLConnectionImpl:http://finance.yahoo.com/d/quotes.csv?s=^GSPC+^GSPTSE+^IXIC+^NDX+^TNX&f=snxl1d1t1c1ohgv&ignore=.csv 01-23 11:57:05.939: D/Data(21987): e.getCause()= libcore.io.ErrnoException: recvfrom failed: ECONNRESET (Connection reset by peer) 01-23 11:57:05.939: D/Data(21987): e.getMessage()= recvfrom failed: ECONNRESET (Connection reset by peer) 01-23 11:57:05.979: D/Data(21987): onPostExecute start 01-23 11:57:06.009: D/Data(21987): onPostExecute end The print stack trace: ============================= 01-23 11:57:05.939: W/System.err(21987): java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer) 01-23 11:57:05.949: W/System.err(21987): at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:545) 01-23 11:57:05.949: W/System.err(21987): at libcore.io.IoBridge.recvfrom(IoBridge.java:509) 01-23 11:57:05.949: W/System.err(21987): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488) 01-23 11:57:05.949: W/System.err(21987): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 01-23 11:57:05.949: W/System.err(21987): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) 01-23 11:57:05.949: W/System.err(21987): at java.io.InputStream.read(InputStream.java:162) 01-23 11:57:05.949: W/System.err(21987): at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142) 01-23 11:57:05.949: W/System.err(21987): at java.io.BufferedInputStream.read(BufferedInputStream.java:227) 01-23 11:57:05.949: W/System.err(21987): at com.android.okhttp.internal.Util.readAsciiLine(Util.java:316) 01-23 11:57:05.959: W/System.err(21987): at com.android.okhttp.internal.http.RawHeaders.fromBytes(RawHeaders.java:308) 01-23 11:57:05.959: W/System.err(21987): at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:135) 01-23 11:57:05.959: W/System.err(21987): at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:644) 01-23 11:57:05.959: W/System.err(21987): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347) 01-23 11:57:05.959: W/System.err(21987): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296) 01-23 11:57:05.959: W/System.err(21987): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503) 01-23 11:57:05.959: W/System.err(21987): at com.retepcivorodot.stockcharts.QuoteListFragment$MyAsyncTask.doInBackground(QuoteListFragment.java:949) 01-23 11:57:05.959: W/System.err(21987): at com.retepcivorodot.stockcharts.QuoteListFragment$MyAsyncTask.doInBackground(QuoteListFragment.java:1) 01-23 11:57:05.959: W/System.err(21987): at android.os.AsyncTask$2.call(AsyncTask.java:288) 01-23 11:57:05.969: W/System.err(21987): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 01-23 11:57:05.969: W/System.err(21987): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 01-23 11:57:05.969: W/System.err(21987): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 01-23 11:57:05.969: W/System.err(21987): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 01-23 11:57:05.969: W/System.err(21987): at java.lang.Thread.run(Thread.java:841) 01-23 11:57:05.969: W/System.err(21987): Caused by: libcore.io.ErrnoException: recvfrom failed: ECONNRESET (Connection reset by peer) 01-23 11:57:05.979: W/System.err(21987): at libcore.io.Posix.recvfromBytes(Native Method) 01-23 11:57:05.979: W/System.err(21987): at libcore.io.Posix.recvfrom(Posix.java:141) 01-23 11:57:05.979: W/System.err(21987): at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164) 01-23 11:57:05.979: W/System.err(21987): at libcore.io.IoBridge.recvfrom(IoBridge.java:506) 01-23 11:57:05.979: W/System.err(21987): ... 21 more