转自: http://www.2cto.com/kf/201111/112100.html

  在android中,一般需要联网的时候前,都要做一次网络的判断,判断当前的网络状态!然后开始请求网络

  当我们使用wap网络的时候,程序中必须要中国移动代理!这样的话,手机才能正常的访问internet!

  在android中,有两种方式请求网络:HttpURLConnection和HttpClient请求方式,如果网络状态为wap的时候,都要为两种请求添加中国移动代理的!

第一种方式:HttpURLConnection

 /**
* @author sky
* 使用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", ));
conn = (HttpURLConnection) url.openConnection(proxy);
}
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(); // 请求超时
conn.setRequestMethod("POST"); // 请求方式
conn.setReadTimeout(); // 读取超时
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(, sb.length() - );
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
*
* 使用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", );
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
}
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在上网请求的时候,存在很多问题的(我是深有体会的,比如请求无响应,信号不好都可能造成一些未知的错误)

为HttpClient和HttpURLConnection添加中国移动代理的更多相关文章

  1. Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie

    HttpClient 与 HttpURLConnection 共用 SessionId HttpClient 与 HttpUrlConnection 是Android 中HTTP操作最常见的訪问方式. ...

  2. java分别通过httpclient和HttpURLConnection获取图片验证码内容

    前面的文章,介绍了如何通过selenium+Tesseract-OCR来识别图片验证码,如果用接口来访问的话,再用selenium就闲的笨重,下面就介绍一下分别通过httpclient和HttpURL ...

  3. HttpClient和HttpURLConnection的使用和区别(下)

    转自来自点击打开链接 接着上一篇,我们继续来分析HttpURLConnection的使用,以及两者的共同点和区别. 目录 用法 HttpURLConnection 区别 引用资料 用法 HttpURL ...

  4. HttpClient和HttpURLConnection整合汇总对比

    性能 1.HttpUrlConnection直接支持GZIP压缩:HttpClient也支持,但要自己写代码处理. 2.HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭 ...

  5. Android 中HttpClient和HttpURLConnection选取

    原文地址:http://android-developers.blogspot.com/2011/09/androids-http-clients.html 译文:http://yunfeng.sin ...

  6. Android4种网络连接方式HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比

    比较的指标: 1.cpu 2.流量 3.电量 4.内存占用 5.联网时间 功能点: 1.重试机制 2.提供的扩展功能 3.易用性 4.是否https 5.是否支持reflect api,OkHttp有 ...

  7. 关于HttpClient,HttpURLConnection,OkHttp的用法

    1 HttpClient入门实例 1.1发送get请求 /** * HttpClient发送get请求 * @param url 请求地址 * @return * @throws IOExceptio ...

  8. HttpClient和HttpURLConnection的使用和区别(上)

    转自:点击打开链接 相信很多Android开发者碰到涉及到Http协议的需求时,都和我一样在犹豫是使用HttpClient还是使用HttpURLConnection呢.我在网上也搜索了很多文章,来分析 ...

  9. HttpClient和HttpURLConnection的区别

    总结了网上的一些资源,主要有以下两个观点: 分析一: 在研究Volley框架的源码中,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnecti ...

随机推荐

  1. Linux 的 Socket IO 模型

    前言 之前有看到用很幽默的方式讲解Windows的socket IO模型,借用这个故事,讲解下linux的socket IO模型: 老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系. 他 ...

  2. linuxc线程信号-pthread_cond_wait理解

    pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t*mutex)函数 传入的參数mutex用于保护条件,由于我们在调用pthread_con ...

  3. SLF4J: Failed to load class的问题及解决

    今天在做接口测试,一运行测试程序,就跳出这样一个大大的错误: SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”. SLF4 ...

  4. leetcode笔记:Majority Element

    一. 题目描写叙述 Given an array of size n, find the majority element. The majority element is the element t ...

  5. Xsolla和Hi-Rez工作室联手推行SMITE

    视频游戏店面管理和计费解决方式的领导者,Xsolla.将重拳出击将与Hi-Rez游戏工作室合作.该工作室是一家美国的独立游戏开发商,主要开发MOBA游戏-SMITE. 支持全球600多种支付方式 Xs ...

  6. ie6不支持png图片的解决办法

    在head里引入png.js文件 <!--[if lte IE 6]> <script type="text/javascript" src="js/P ...

  7. python 线程 进程 标识

    s = '%s%s%s%s%s%s%s%s' % ( time.strftime('%Y%m%d %H:%M:%S', time.localtime(time.time())), ' os.getpp ...

  8. ABAP WEBRFC

    通过WEBRFC实现在网页下载SMW0上传的文件 FUNCTION zhr_download_test. *"---------------------------------------- ...

  9. 创建javaScript 对象

    创建新实例person 并向其添加四个属性: person=new Object(); person.firstname="Bill"; person.lastname=" ...

  10. 杂项-Java:Thymeleaf

    ylbtech-杂项-Java:Thymeleaf Thymeleaf is a modern server-side Java template engine for both web and st ...