android httpclient Host is unresolved 错误解决方案
无法连接的主要原因是我们的手机都是通过移动或者联通代理出去的请求,所以无法直接发送出去
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;
}
}
* 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里面的数据,好像移动和联通都是一样的。都是这个代理地址