android httpclient Host is unresolved 错误解决方案

作者也一直遇到这个问题,很奇怪,用wifi连接,没有问题,关闭wifi或者不在wifi区域,就无法连接我的服务器。

 

 

读者可先看这篇文章 http://blog.csdn.net/dropWater_yjqbll/archive/2010/12/16/6079531.aspx

 

无法连接的主要原因是我们的手机都是通过移动或者联通代理出去的请求,所以无法直接发送出去。

 

自己写了类如下:

public static String request(int netType, String host, String url,  
            int method, List<NameValuePair> pamrams) {  
        if(netType==HttpUtil.WAP_INT){ //wap上网  
            HttpRequestBase request = null;  
            String strReust = null;  
            try { //wap  
                //截取 http://klmu.v228.10000net.cn/publicbicycle 为 klmu.v228.10000net.cn  
                HttpHost target = new HttpHost(getHostStr(host),Integer.parseInt(getPort(host)));  
                if (method == 0) {  
                    request = new HttpPost(getUrl(host,url));  
                    if (pamrams != null) {  
                        ((HttpPost) request).setEntity(new UrlEncodedFormEntity(  
                                pamrams, HTTP.UTF_8));  
                    }  
                } else if (method == 1) {  
                    request = new HttpGet(url);  
                }  
                //新建HttpClient对象   
                DefaultHttpClient httpClient = new DefaultHttpClient();  
                HttpHost proxy = new HttpHost("10.0.0.172", 80);  
                httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,  
                        proxy);  
                HttpResponse httpResponse = httpClient.execute(target, request);  
                if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  
                    strReust = EntityUtils.toString(httpResponse.getEntity());  
                } else {  
                    strReust = HTTPERROR_Start + " 服务器httpCode: "+ httpResponse.getStatusLine().getStatusCode() + HTTPERROR_END;  
                }  
                httpClient.getConnectionManager().shutdown();  
            } catch (Exception e) {  
                strReust = HTTPERROR_Start + e.getMessage() + HTTPERROR_END;  
            }  
            return strReust;  
        } else if(netType==HttpUtil.WIFI_INT){ //wifi  
            url = host+url;  
            HttpRequestBase request = null;  
            String strReust = null;  
            try {  
                if (method == 0) {  
                    request = new HttpPost(url);  
                    if (pamrams != null) {  
                        ((HttpPost) request).setEntity(new UrlEncodedFormEntity(  
                                pamrams, HTTP.UTF_8));  
                    }  
                } else if (method == 1) {  
                    request = new HttpGet(url);  
                }  
                // 设置连接超时时间和数据读取超时时间   
//              HttpParams httpParams = new BasicHttpParams();  
//              HttpConnectionParams.setConnectionTimeout(httpParams, 500);  
//              HttpConnectionParams.setSoTimeout(httpParams, 60 * 1000);  
                //新建HttpClient对象   
                //HttpClient httpClient = new DefaultHttpClient(httpParams);  
                HttpClient httpClient = new DefaultHttpClient();  
                HttpResponse httpResponse = httpClient.execute(request);  
                if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  
                    strReust = EntityUtils.toString(httpResponse.getEntity());  
                } else {  
                    strReust = HTTPERROR_Start + " 服务器httpCode: "+ httpResponse.getStatusLine().getStatusCode()+ HTTPERROR_END;  
                }  
                httpClient.getConnectionManager().shutdown();  
            } catch (Exception e) {  
                strReust = HTTPERROR_Start + e.getMessage() + HTTPERROR_END;  
            }  
            return strReust;  
        } else {  
            return  HTTPERROR_Start + "无法连接网络!" + HTTPERROR_END;  
        }  
    }  
  * <Description>
* 1:wifi  
* 2:wap  
* 3:无法取得网络  
* @since May 10, 2011  
* @param conn  
* @return <Description>  
*  
*/  
ublic static int getNetType(Context ctx) {  
ConnectivityManager conn = (ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE);  
if (conn == null){  
    return HttpUtil.NONET_INT;  
}  
NetworkInfo info = conn.getActiveNetworkInfo();  
if (info == null){  
    return HttpUtil.NONET_INT;  
}  
String type = info.getTypeName();//MOBILE(GPRS);WIFI  
Log.v("tag", "NetworkType=" + type);  
if (type.equals("WIFI")) {  
    return HttpUtil.WIFI_INT;  
} else {//if (type.equals("MOBILE")) {  
    return HttpUtil.WAP_INT;  
}  
  由于我是用移动的卡,所以HttpHost proxy = new HttpHost("10.0.0.172", 80); 这个写死了,这里应该取apn里面的数据,好像移动和联通都是一样的。都是这个代理地址。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值