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

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

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

/** * @author spring sky * Email vipa1888@163.com * QQ:840950105 My name:石明政 * 使用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);}else{conn = 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 spring sky * Email vipa1888@163.com * QQ:840950105 My name :石明政 * 使用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);}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的联网应用就可以开发了!呵呵 微笑

更多相关文章

  1. android的5种数据存储方式
  2. Android之网络请求5————OkHttp源码2:发送请求
  3. Android定时任务的实现方式
  4. Android快捷方式解密
  5. android中检测网络连接状态简单总结
  6. Android界面布局的几种常用方式
  7. 网络界面Android 网络连接--Wifi/3G

随机推荐

  1. 获取应用签名
  2. Android切换主线程更新UI方法总结
  3. Android获取Mac地址,支持android Q
  4. Android(安卓)RIL源码分析(2)
  5. android 触发AppWidget上控件事件来更新A
  6. android SQLite数据库2
  7. Android黑科技 自动点击
  8. 【Android】Android背景选择器selector用
  9. Android(安卓)中将 "base64图片" 解码为"
  10. Android环形进度条(安卓默认形式)实例代