Android通过HttpURLConnection与HttpClient联网代理网关设置

转载 2013年12月03日 11:13:43

转载自:http://blog.csdn.net/mrlixirong/article/details/6966862 


 Android联网主要使用HttpURLConneciton和HttpClient进行联网,在手机联网的时候,我们优先选择wifi网络,其次在选择移动网络,这里所述移动网络主要指cmwap。

大家都知道cmwap连接需要设置代理地址和端口,那么,android程序中如何设置代理呢?

1、HttpURLConnection设置代理

[java] view plaincopy
  1. //当我们使用的是中国移动的手机网络时,下面方法可以直接获取得到10.0.0.172,80端口  
  2. String host=android.net.Proxy.getDefaultHost();//通过andorid.net.Proxy可以获取默认的代理地址  
  3. int port =android.net.Proxy.getDefaultPort();//通过andorid.net.Proxy可以获取默认的代理端口  
  4. SocketAddress sa=new InetSocketAddress(host,port);  
  5. //定义代理,此处的Proxy是源自java.net  
  6. Proxy proxy=new Proxy(java.net.Proxy.Type.HTTP,sa);  
  7. URL getUrl = new URL(“www.baidu.com”);   
  8. HttpURLConnection con = (HttpURLConnection) getUrl.openConnection(proxy);//设置代理  


2、HttpClient设置代理

[java] view plaincopy
  1. DefaultHttpClient httpClient=new DefaultHttpClient();  
  2. String host=Proxy.getDefaultHost();//此处Proxy源自android.net  
  3. int port = Proxy.getPort(context);//同上  
  4. HttpHost httpHost = new HttpHost(host, port);   
  5. //设置代理  
  6. httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,httpHost);  
  7. HttpGet httpGet=new HttpPost("<a href="http://www.baidu.com">www.baidu.com</a>");  
  8. HttpResponse response=httpClient.execute(httpGet);  

 

3、判断手机是否联网

[java] view plaincopy
  1. boolean isConnect(){  
  2.     ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);  
  3.     if(cm!=null){  
  4.         return true;  
  5.     }  
  6.     return false;  
  7. }  


4、判断当前网络是否为WIFI

[java] view plaincopy
  1. boolean isWifi(){  
  2.     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
  3.     if(cm!=null){  
  4.         NetworkInfo  ni = cm.getActiveNetworkInfo();  
  5.         if(!ni.getTypeName().equals("WIFI")){  
  6.             /* 
  7.              * ni.getTypeNmae()可能取值如下 
  8.              * WIFI,表示WIFI联网 
  9.              * MOBILE,表示GPRS、EGPRS 
  10.              * 3G网络没有测试过 
  11.              * WIFI和(E)GPRS不能共存,如果两个都打开,系统仅支持WIFI 
  12.              */  
  13.             return true;  
  14.         }  
  15.     }  
  16.     return false;  
  17. }  


 综合判断网络类型,我们便可以确定是否需要设置代理,实现正确的联网。

示例一

[java] view plaincopy
  1. HttpURLConnection con =null;  
  2. URL postUrl = new URL("www.baidu.com");  
  3. boolean isProxy=false;  
  4. //网络检测  
  5. ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
  6. boolean isProxy=false;  
  7. if(cm!=null){  
  8.     NetworkInfo  ni = cm.getActiveNetworkInfo();  
  9.     if(ni!=null){  
  10.         if(! ni.getTypeName().equals("WIFI")){  
  11.             isProxy=true;  
  12.         }  
  13.     }  
  14. }  
  15. if(isProxy){  
  16.     Proxy proxy=new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress(android.net.Proxy.getDefaultHost(),android.net.Proxy.getDefaultPort()));  
  17.     con = (HttpURLConnection) postUrl.openConnection(proxy);  
  18. }else{  
  19.     con = (HttpURLConnection) postUrl.openConnection();  
  20. }  


示例二

[java] view plaincopy
  1. DefaultHttpClient httpClient=new DefaultHttpClient();  
  2. //网络检测  
  3. ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
  4. if(cm!=null){  
  5.     NetworkInfo  ni = cm.getActiveNetworkInfo();  
  6.     if(ni!=null){  
  7.         if(!ni.getTypeName().equals("WIFI")){  
  8.             //设置代理  
  9.             String host=Proxy.getDefaultHost();  
  10.             int port = Proxy.getPort(context);    
  11.             HttpHost httpHost = new HttpHost(host, port);   
  12.             httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,httpHost);  
  13.         }  
  14.     }  
  15. }  

Android通过HttpURLConnection与HttpClient联网代理网关设置

Android联网主要使用HttpURLConneciton和HttpClient进行联网,在手机联网的时候,我们优先选择wifi网络,其次在选择移动网络,这里所述移动网络主要指cmwap。 大家都...

[移动网关]解决3gwap联网失败:联网请求在设置代理与直连两种方式的切换

[Android]解决3gwap联网失败:联网请求在设置代理与直连两种方式的切换 问题现象: 碰到一个问题,UI交互表现为:联通号码在3gwap网络环境下资源一直无法下载成功。 查看Log日志,打印出...
  • sodino
  • sodino
  • 2013年08月27日 17:45
  • 6015

HttpURLConnection和httpclient添加代理IP和端口

HttpURLConnection添加代理IP,httpclient设置代理
  • bestcxx
  • bestcxx
  • 2016年01月07日 23:37
  • 681

批处理、VBS实现自动设置IP、默认网关、DNS、WINS、IE代理!

因为公司有同事负责大连、沈阳两个城市,经常在两地来回走动,到每个城市后,都要自己手动更改相应的网络配置,况且到外地时住的是酒店, 酒店上网是自动获得IP,又要将网络设置取消,真的很麻烦!于是想起...

android HttpClient 代理设置 连接到互联网

android 联网方式之HttpURLConnection

先简单介绍下android的联网方式下边是官网给出的描述: Most network-connected Android apps use HTTP to send and receive data...

android 用httpClient和HttpUrlConnection上传文件

HttpClient上传文件用到httpmime-4.1.3.jar,直接上代码 String url = "http://192.168.2.12:8080/UploadFile/default/u...

Android网络请求库对比之HttpUrlConnection和HttpClient

最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议...

Android网络编程(二)HttpClient与HttpURLConnection

 转载:  http://liuwangshu.cn/application/network/2-httpclienthttp-urlconnection.html 1.HttpClie...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android通过HttpURLConnection与HttpClient联网代理网关设置
举报原因:
原因补充:

(最多只允许输入30个字)