android HttpURLConnection conn = null; conn = getConnection(msg);

 /**
     * 打开一个Http连接,失败则返回null
     *
     * @param msg
     * @param proxy
     * @return
     */
    private HttpURLConnection getConnection(HttpMsg msg) throws Throwable {
     String url = msg.getUrl();
     HttpURLConnection conn = null;
  String defaultHost = Proxy.getDefaultHost();
  int defaultPort = Proxy.getDefaultPort();
  URL hostUrl = null;
  
  ConnectivityManager connectivityManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
  int type = -1;
  if(activeNetworkInfo!=null){
   type = activeNetworkInfo.getType();
  }
  String exrea = activeNetworkInfo.getExtraInfo();
  
    //wap
  if(type == ConnectivityManager.TYPE_MOBILE
    && (exrea != null && exrea.endsWith("wap")) && defaultHost != null
    && defaultPort > 0){
   
   String host = null;
   String path = null;
   int hostIndex = " http://".length();
   int pathIndex = url.indexOf('/', hostIndex);
   if (pathIndex < 0) {
    host = url.substring(hostIndex);
    path = "";
   } else {
    host = url.substring(hostIndex, pathIndex);
    path = url.substring(pathIndex);
   }
   hostUrl = new URL("http://" + defaultHost + ":" + defaultPort
     + path);
   conn = (HttpURLConnection) hostUrl.openConnection();
   conn.setRequestProperty("X-Online-Host", host);
   
  }
  //某些机型extra会有null情况 并且有代理
  else if ((type == ConnectivityManager.TYPE_MOBILE) && exrea == null && defaultHost != null && defaultPort > 0)
  {
   java.net.Proxy proxy = new java.net.Proxy(Type.HTTP, new InetSocketAddress(defaultHost, defaultPort));
   URL proxyURL = new URL(url);
   conn = (HttpURLConnection) proxyURL.openConnection(proxy);
  }
  else {

   hostUrl = new URL(url);
   conn = (HttpURLConnection) hostUrl.openConnection();
  }
  conn.setConnectTimeout(10000);
  conn.setInstanceFollowRedirects(msg.isInstanceFollowRedirects());
        Enumeration enu = msg.requestProperty.keys();
        String key;
        String value;
        while (enu.hasMoreElements()) {
            key = (String) enu.nextElement();
            value = (String) msg.requestProperty.get(key);
            conn.setRequestProperty(key, value);
        }
        return conn;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FocusOneThread

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值