Android HttpURLConnection非常慢

Android HttpURLConnection非常慢,android,timeout,httpurlconnection,galaxy,Android,Timeout,Httpurlconnection,Galaxy,以下代码就是我面临的情况: 如您所见,我正在尝试读取HTTP流。当我在Android模拟器上运行以下代码时,它会100%工作;当我在Galaxy S3上运行以下代码时,它会100%工作;当我尝试使用笔记本电脑浏览器连接URL时,它会100%工作;当我尝试使用Galaxy S3浏览器(wifi和3G)连接时,它会工作。。。100%的时间。然而,当我在Wi-Fi上尝试使用Galaxy S3连接时,我有80%的时间超时。如果删除超时属性,会出现奇怪的异常,例如: "recvfrom failed: E

以下代码就是我面临的情况:

如您所见,我正在尝试读取HTTP流。当我在Android模拟器上运行以下代码时,它会100%工作;当我在Galaxy S3上运行以下代码时,它会100%工作;当我尝试使用笔记本电脑浏览器连接URL时,它会100%工作;当我尝试使用Galaxy S3浏览器(wifi和3G)连接时,它会工作。。。100%的时间。然而,当我在Wi-Fi上尝试使用Galaxy S3连接时,我有80%的时间超时。如果删除超时属性,会出现奇怪的异常,例如:

"recvfrom failed: ETIMEDOUT"
"failed to connect to <URL>: connect failed: ENETUNREACH (Network is unreachable)"
"unable to resolve the host <URL>: no address associated with hostname"
更新: -使用AndroidHttpClient不起作用 -在获得输入流之后,我在eclipse IDE中弹出了一个错误。。。如您所见,我的调试光标一直指向第107行。。好吧,在我这次得到输入流之后。。。

作为一个实验,如果您尝试使用
AndroidHttpClient
类来做同样的事情,会怎么样?它有一些预定义的超时和其他设置,我们被告知,这些设置在大多数情况下应该可以正常工作。

作为一个实验,如果您尝试使用
AndroidHttpClient
类来做同样的事情,会怎么样?它有一些预定义的超时和其他设置,我们被告知,在大多数情况下应该可以正常工作。

我在Android设备上也遇到了同样的问题。我在url中使用IP地址。最后,我发现HttpURLConnection.connect(…)方法在内部涉及getHostName()。在那之后,我在url中使用域,然后它100%的时间工作

我在安卓设备上也遇到了同样的问题。我在url中使用IP地址。最后,我发现HttpURLConnection.connect(…)方法在内部涉及getHostName()。在那之后,我在url中使用域,然后它100%的时间工作

谢谢,我会试一试,然后回复。不过,我确实尝试过使用org.apache.http.client.HttpClient,得到了相同的结果。谢谢,我会尝试一下,然后回复。但是,我确实尝试过使用org.apache.http.client.HttpClient,得到了相同的结果。
public static final String getHttpResponse(String url)
{
    HttpURLConnection conn = null;
    InputStream response = null;
    try { 
        URL address = new URL(url);
        conn = (HttpURLConnection)address.openConnection();
        conn.setConnectTimeout(30 * 1000); //30 seconds
        conn.setReadTimeout(30 * 1000); //30 seconds

        response = conn.getInputStream();

        if(conn.getResponseCode() != HttpURLConnection.HTTP_OK) { 
            Log.e("Util.getHttpResponse", Integer.toString(conn.getResponseCode()));
            return null; 
        }

        String result = Util.streamToString(response);
        return result;

    } catch(IOException e) {
        response = conn.getErrorStream();
        Log.e("Util.getHttpResponse", Util.streamToString(response));
        return null;

    } finally { 
        if( response != null ) { 
            try {
                response.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(conn != null) { 
            conn.disconnect();
        }
    }
}