Android通过HttpURLConnection与HttpClient联网代理网关设置
来源:互联网 发布:电影产业 知乎 编辑:程序博客网 时间:2024/05/22 12:49
Android联网主要使用HttpURLConneciton和HttpClient进行联网,在手机联网的时候,我们优先选择wifi网络,其次在选择移动网络,这里所述移动网络主要指cmwap。
大家都知道cmwap连接需要设置代理地址和端口,那么,android程序中如何设置代理呢?
1、HttpURLConnection设置代理
- //当我们使用的是中国移动的手机网络时,下面方法可以直接获取得到10.0.0.172,80端口
- String host=android.net.Proxy.getDefaultHost();//通过andorid.net.Proxy可以获取默认的代理地址
- int port =android.net.Proxy.getDefaultPort();//通过andorid.net.Proxy可以获取默认的代理端口
- SocketAddress sa=new InetSocketAddress(host,port);
- //定义代理,此处的Proxy是源自java.net
- Proxy proxy=new Proxy(java.net.Proxy.Type.HTTP,sa);
- URL getUrl = new URL(“www.baidu.com”);
- HttpURLConnection con = (HttpURLConnection) getUrl.openConnection(proxy);//设置代理
2、HttpClient设置代理
- DefaultHttpClient httpClient=new DefaultHttpClient();
- String host=Proxy.getDefaultHost();//此处Proxy源自android.net
- int port = Proxy.getPort(context);//同上
- HttpHost httpHost = new HttpHost(host, port);
- //设置代理
- httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,httpHost);
- HttpGet httpGet=new HttpPost("<a href="http://www.baidu.com">www.baidu.com</a>");
- HttpResponse response=httpClient.execute(httpGet);
3、判断手机是否联网
- boolean isConnect(){
- ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
- if(cm!=null){
- return true;
- }
- return false;
- }
4、判断当前网络是否为WIFI
- boolean isWifi(){
- ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- if(cm!=null){
- NetworkInfo ni = cm.getActiveNetworkInfo();
- if(!ni.getTypeName().equals("WIFI")){
- /*
- * ni.getTypeNmae()可能取值如下
- * WIFI,表示WIFI联网
- * MOBILE,表示GPRS、EGPRS
- * 3G网络没有测试过
- * WIFI和(E)GPRS不能共存,如果两个都打开,系统仅支持WIFI
- */
- return true;
- }
- }
- return false;
- }
综合判断网络类型,我们便可以确定是否需要设置代理,实现正确的联网。
示例一
- HttpURLConnection con =null;
- URL postUrl = new URL("www.baidu.com");
- boolean isProxy=false;
- //网络检测
- ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- boolean isProxy=false;
- if(cm!=null){
- NetworkInfo ni = cm.getActiveNetworkInfo();
- if(ni!=null){
- if(! ni.getTypeName().equals("WIFI")){
- isProxy=true;
- }
- }
- }
- if(isProxy){
- Proxy proxy=new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress(android.net.Proxy.getDefaultHost(),android.net.Proxy.getDefaultPort()));
- con = (HttpURLConnection) postUrl.openConnection(proxy);
- }else{
- con = (HttpURLConnection) postUrl.openConnection();
- }
示例二
- DefaultHttpClient httpClient=new DefaultHttpClient();
- //网络检测
- ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- if(cm!=null){
- NetworkInfo ni = cm.getActiveNetworkInfo();
- if(ni!=null){
- if(!ni.getTypeName().equals("WIFI")){
- //设置代理
- String host=Proxy.getDefaultHost();
- int port = Proxy.getPort(context);
- HttpHost httpHost = new HttpHost(host, port);
- httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,httpHost);
- }
- }
- }
0 0
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- HttpClient HttpURLConnection设置代理IP和端口
- android HttpURLConnection ,HttpClient设置Cookie
- HttpURLConnection和HttpClient联网
- HttpURLConnection和HttpClient联网
- Android学习 HttpClient 与 HttpUrlConnection
- HttpURLConnection 与 Android HttpClient 对比
- [移动网关]解决3gwap联网失败:联网请求在设置代理与直连两种方式的切换
- android 联网请求的两种方式HttpURLConnection和HttpClient
- HttpURLConnection和HttpClient联网区别
- android中HttpUrlConnection与HttpClient区别
- Android网络基础之HttpClient与HttpURLConnection
- poj 3264 RMQ查找最大最小算法
- Python学习笔记(一)--Python基础知识:变量、数据类型、模块与字符串
- 八-应用Wireshark过滤条件抓取特定数据流
- ubuntu 中文变成小方框 口
- maven
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- Web_JavaScript_JS随记:分页组件;
- n个骰子的点数以及出现概率
- 剑指offer--循环递归
- 自动替换输入的字符
- ActionBar黑色阴影渐变效果
- iOS推送与角标总结
- 装机员Ghost一键备份还原使用方法(硬盘装系统)
- android 6.0 权限授权