ksoap2-android访问webservice,当网络有代理的情况(cmwap)
2011-02-24 17:27
459 查看
个人主页已迁移到: http://www.blog4app.com
ksoap2-android是在android平台,访问webservice的外部jar包。
项目遇到的bug如下:当手机使用wifi或者net访问webservice的时候一切正常,但是当手机网络为wap的情况下,就连接失败。
解决办法:ksoap2-android最新版本是2.5.4。在2.5.2之前源码都是不支持代理访问的,在2.5.4之后,源码增加了对网络有代理的支持。
下面把主要代码贴出来:
androi下net和wap自适应代码:
ksoap2-android是在android平台,访问webservice的外部jar包。
项目遇到的bug如下:当手机使用wifi或者net访问webservice的时候一切正常,但是当手机网络为wap的情况下,就连接失败。
解决办法:ksoap2-android最新版本是2.5.4。在2.5.2之前源码都是不支持代理访问的,在2.5.4之后,源码增加了对网络有代理的支持。
下面把主要代码贴出来:
//判断当前网络是否是net,true为net,false为wap public static boolean isGprsNet(){ String proxyHost = android.net.Proxy.getDefaultHost(); return proxyHost==null; } //根据网络类型返回相应的HttpTransportSE webservice用 public static HttpTransportSE getHttpTransportSE(Context context){ HttpTransportSE ht; if(!HttpUtil.isGprsNet()){ java.net.Proxy p = new java.net.Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress(android.net.Proxy.getDefaultHost(),android.net.Proxy.getDefaultPort())); ht=new HttpTransportSE(p,context.getString(R.string.wsurl)); }else{ ht = new HttpTransportSE(context.getString(R.string.wsurl)); } return ht; } /* * 登录接口 1成功 0失败 */ public String login(Context context,String phoneNumber,String pwd){ SoapObject request = new SoapObject(context.getString(R.string.namespace), "login"); request.addProperty("usrPhone", phoneNumber); request.addProperty("passWord", pwd); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11 ); envelope.bodyOut=request; HttpTransportSE ht = HttpUtil.getHttpTransportSE(context); try { ht.call(null, envelope); } catch (Exception e) {} SoapObject so = null; so = (SoapObject) envelope.bodyIn; String result= so.getProperty("return").toString(); return result; }
androi下net和wap自适应代码:
private HttpURLConnection getURLConnection(String url) throws Exception { String proxyHost = android.net.Proxy.getDefaultHost(); if (proxyHost != null) { java.net.Proxy p = new java.net.Proxy(java.net.Proxy.Type.HTTP, new InetSocketAddress(android.net.Proxy.getDefaultHost(), android.net.Proxy.getDefaultPort())); return (HttpURLConnection) new URL(url).openConnection(p); } else { return (HttpURLConnection) new URL(url).openConnection(); } }
相关文章推荐
- Android下get/post访问网络及webService的调用
- android 访问移动网络时的wap代理设置
- Android 的网络编程(5)-通过ksoap2调用webservice示例
- Android 网络显示图片 通过代理访问
- android ksoap2 访问webservice,连续两次调用时,第二次调用异常(转)
- Android客户端添加代理访问网络
- android ksoap2 访问webservice,连续两次调用时,第二次调用异常
- Android采用KSOAP2访问webservice
- webservice axis2客户端设置代理方法(公司网络通过代理访问时)
- android ksoap2 访问webservice,连续两次调用时,第二次调用异常(转)
- android采用Ksoap2访问webservice,AndroidHttpTransport call方法异常
- android采用Ksoap2访问webservice,AndroidHttpTransport call方法异常
- xfire生成webservice,Android利用ksoap2访问webservice 之 服务器搭建
- Android客户端WebService访问接口(Ksoap2Android调用.net服务端)
- Android核心基础-7.Android 网络通信-6.访问Webservice
- android采用Ksoap2访问webservice,AndroidHttpTransport call方法异常
- Android实现KSOAP2访问WebService
- 用ksoap2-android 访问webservice设置超时的问题
- 网络访问与服务——Android中如何调用WebService
- xfire生成webservice,Android利用ksoap2访问webservice 之 客户端搭建