android请求的两种方式
来源:互联网 发布:杨幂和唐嫣友情知乎 编辑:程序博客网 时间:2024/06/08 07:13
地址:http://www.2cto.com/kf/201111/112100.html
在android中,一般需要联网的时候前,都要做一次网络的判断,判断当前的网络状态!然后开始请求网络
当我们使用wap网络的时候,程序中必须要中国移动代理!这样的话,手机才能正常的访问internet!
在android中,有两种方式请求网络:HttpURLConnection和HttpClient请求方式,如果网络状态为wap的时候,都要为两种请求添加中国移动代理的!
第一种方式:HttpURLConnection
/**
* @author sky
* Email vipa1888@163.com
* QQ:840950105
* 使用HttpURLConnection请求Internet
* @param context context对象
* @param requestUrl 请求的URL
* @param param 请求的参数
* @return 返回一个inputstream流
*/
public static InputStream getHttpURLConnectionInputStream(Context context,String requestUrl,Map<String, String> param) {
URL url;
HttpURLConnection conn = null;
InputStream input = null;
try {
url = new URL(requestUrl);
if(getAPNType(context)==NetWorkUtil.CMWAP) //当请求的网络为wap的时候,就需要添加中国移动代理
{
Proxy proxy = new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress("10.0.0.172", 80));
conn = (HttpURLConnection) url.openConnection(proxy);
}
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(10000); //请求超时
conn.setRequestMethod("POST"); //请求方式
conn.setReadTimeout(1000); //读取超时
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Charset", "UTF-8");
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
OutputStream os = conn.getOutputStream();
StringBuilder sb = new StringBuilder();
Iterator<String> it = param.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
String value = param.get(key);
sb.append(key).append("=").append(value).append("&");
}
String p = sb.toString().substring(0, sb.length()-1);
System.out.println("请求的参数"+p);
os.write(p.getBytes("utf-8"));
os.close();
if(conn!=null)
{
input = conn.getInputStream();
}
} catch (Exception e) {
e.printStackTrace();
}
return input;
}
上面这种方式就是HttpURLConnection ,这种方式在android开发中也是比较常用的,希望朋友们也要熟悉的掌握!
第二种方式:HttpClient
/**
* @author sky
* Email vipa1888@163.com
* QQ:840950105
* 使用HttpURLConnection请求Internet
* @param context context对象
* @param requestUrl 请求的URL
* @param param 请求的参数
* @return 返回一个inputstream流
*/
public static InputStream getHttpClientInputStream(Context context,String requestUrl, Map<String, String> param)throws Exception {
HttpClient client = new DefaultHttpClient();
if(getAPNType(context)==NetWorkUtil.CMWAP) //当请求的网络为wap的时候,就需要添加中国移动代理
{
HttpHost proxy = new HttpHost("10.0.0.172", 80);
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
proxy);
} www.2cto.com
HttpPost hp = new HttpPost(requestUrl);
hp.setHeader("Charset", "UTF-8");
hp.setHeader("Content-Type", "application/x-www-form-urlencoded");
List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();
Iterator<String> it = param.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
list.add(new BasicNameValuePair(key, param.get(key)));
}
hp.setEntity(new UrlEncodedFormEntity(list,"UTF-8"));
HttpResponse response = null;
response = client.execute(hp);
return response.getEntity().getContent();
}
这个httpClient实现了android内置的DefaultHttpClient,所以使用起来还是很方便的!
但是我发现HttpClient 比HttpURLConnection 要好一些,因为HttpURLConnection 如果使用wap在上网请求的时候,存在很多问题的(我是深有体会的,比如请求无响应,信号不好都可能造成一些未知的错误)
- android请求的两种方式
- Android的http两种请求方式
- android 联网请求的两种方式HttpURLConnection和HttpClient
- android的两种网络请求方式关键代码详解
- 发送HTTP请求的两种方式
- Struts2的两种请求方式
- struts2获取请求的两种方式
- 请求转发的两种方式
- 网络的两种请求方式
- reuqest 两种请求方式的解码
- 最新httpclient4.3 两种请求的两种方式
- 最新httpClient4.3两种请求的两种方式
- http 请求 两种主要的请求方式
- android中post和get两种方式发送请求
- Android中post和get两种方式发送请求
- android之Http两种post请求方式
- Android 中的两种请求网络资源的方式:HttpClient和HttpURLConnection
- Http请求两种方式
- Algorithmic Implementation series(6) Implementation of Quick_Sort
- Tomcat配置的一点注意
- 黑马程序员之银行业务调度系统
- (1)String类格式化当前日期
- (2)九九乘法表
- android请求的两种方式
- Word技巧
- java--解决矩形排序(Set集合运用)
- 【mfxp.com】高手分享:轻松搞定硬盘“HDD Not Detected”错误提示
- JMS学习
- Struts2里.do的后缀无法访问的解决方法
- 【xp系统下载】用Excel做个工程倒计时牌
- 第三章 例3.3
- for_each的各种使用方法