Android在Http连接中设置超时和代理?

本文出自:http://ylxfc.sinaapp.com/?p=147

最近在看关于Http的相关知识,在此看到一篇前辈写的关于链接超时(connect timeout)和socket输入流等待数据到达的时间超时(socket timeout)。

Http连接的超时机制能够防止连接线程的无限期等待,一般可分为connect timeout和socket timeout,在Android中可以使用HttpClient和HttpURLConnection建立Http连接,因此存在两种设置超时的方式,首先Socket等待建立连接的超时时间Socket输入流等待数据到达的超时时间设置如下:


private static final int HTTP_CONNECT_TIMEOUT = 20 * 1000;
private static final int HTTP_SOCKET_TIMEOUT = 20 * 1000;

1)HttpClient方式:

HttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, HTTP_CONNECT_TIMEOUT);
HttpConnectionParams.setSoTimeout(params, HTTP_SOCKET_TIMEOUT);

2)HttpURLConnection方式:


    try {
        URL url = new URL(“http://www.baidu.com”);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setConnectTimeout(HTTP_CONNECT_TIMEOUT);
        conn.setReadTimeout(HTTP_SOCKET_TIMEOUT);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


Android应用程序访问互联网时,如果处于WIFI或者CMNET、UNINET或者3GNET,CTNET等接入方式时,无需设置代理即可顺利的访问网络,但是如果处于WAP环境下,

那么就需要首先设置代理,之后才能访问互联网。Android通过WAP方式联网可参见http://blog.csdn.net/ace1985/article/details/7844159 跟设置超时一样,设置代理同样有HttpClient和HttpURLConnection两种方式:

1)HttpClient方式:


    HttpClient httpClient = new DefaultHttpClient();
    String host = Proxy.getDefaultHost(); //默认代理服务器地址
    int port = Proxy.getDefaultPort(); //默认代理服务器端口号
    HttpHost httpHost = new HttpHost(host, port);
    HttpParams params = httpClient.getParams();
    params.setParameter(ConnRouteParams.DEFAULT_PROXY, httpHost); //设置默认代理

2)HttpURLConnection方式:
String host = android.net.Proxy.getDefaultHost(); // 默认代理服务器地址
int port = android.net.Proxy.getDefaultPort(); // 默认代理服务器端口号
SocketAddress socketAddr = new InetSocketAddress(host, port);
// 构造代理对象
java.net.Proxy proxy = new java.net.Proxy(java.net.Proxy.Type.HTTP, socketAddr);
try {
    URL url = new URL(“www.baidu.com”);
    // 设置代理
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解决Android Studio连接超时错误可以尝试以下方法: 1. 检查网络连接:确保你的网络连接正常,可以尝试使用其他网络或者重启网络设备。 2. 检查防火墙设置:防火墙可能会阻止Android Studio与Gradle服务器的连接。请确保防火墙允许Android Studio访问网络。 3. 更改Gradle版本:尝试更改项目的Gradle版本。可以在项目的build.gradle文件修改Gradle版本号,然后重新同步项目。 4. 使用代理服务器:如果你在使用代理服务器,请确保Android Studio的代理设置正确。可以在Android Studio的设置找到代理设置,并根据你的代理服务器配置进行相应的设置。 5. 清除Gradle缓存:有时候Gradle缓存可能会导致连接超时错误。可以尝试清除Gradle缓存并重新同步项目。可以在Android Studio的设置找到Gradle设置,然后点击"清除"按钮来清除缓存。 6. 更新Android Studio和Gradle:确保你使用的是最新版本的Android Studio和Gradle。可以在Android Studio的设置检查更新,并按照提示进行更新。 7. 检查代理设置:如果你使用了代理服务器,请确保代理设置正确。可以在Android Studio的设置找到代理设置,并根据你的代理服务器配置进行相应的设置。 8. 重启Android Studio:有时候重启Android Studio可以解决连接超时错误。尝试关闭Android Studio并重新打开。 希望以上方法能够帮助你解决连接超时错误。如果问题仍然存在,请提供更多详细信息以便进一步帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值