ksoap2-android访问webservice,当…

ksoap2-android是在android平台,访问webservice的外部jar包。

 

        项目遇到的bug如下:当手机使用wifi或者net访问webservice的时候一切正常,但是当手机网络为wap的情况下,就连接失败。

 

 

        解决办法:ksoap2-android最新版本是2.5.4。在2.5.2之前源码都是不支持代理访问的,在2.5.4之后,源码增加了对网络有代理的支持。

 

        下面把主要代码贴出来:

 

 

[java]  view  plaincopy

//判断当前网络是否是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 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;  

 

  

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);  

    SoapSerializationEnvelopenvelope 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自适应代码:

 

 

[java]  view  plaincopy

private HttpURLConnection getURLConnection(String url) throws Exception       

          String proxyHost android.net.Proxy.getDefaultHost();       

          if (proxyHost != null)       

              java.net.Proxy 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();       

               

     }     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值