KSoap2 调用JAX-WS

本文作为个人研究android的文章之一,已经测试通过.

编程工具用的是NetBeans7.2 (呵呵,Eclipse 功能太强大 ,掌握不住)做的WebServise

KSoap2的版本 我用的是 2.5.2,3.1.1 我用过,貌似是不行.回头,我测试一下

功能逻辑很简单 从 android上面的EditText中间获取到输入的值 然后调用上述WSDL去完成登录操作 

返回值是一个String型 回头我再看看复杂对象的处理.

先发一些参考资料

 android API http://wiki.eoeandroid.com/Android_4.1_APIs

Ksoap2 API http://ksoap2.sourceforge.net/doc/api/

调试不通时候的参考资料 http://www.tuicool.com/articles/UfA7Bb 返回手机所在地的  网上的例子很多是关于QQ在线的推荐还是看一下  至少知道如何去写,有些博主的解释相当到位的,但是限于能力 还是要自己理解

前提WebService启动状态

值得说明的是

1.     request.addProperty("pUsername", username);
        request.addProperty("pPassword", password);

这里的参数需要和WS的参数名一致 ,有些版本说只要数量对就可以.我需要回头试一下,个人推荐一致.

2. new SoapSerializationEnvelope(SoapEnvelope.VER11) 这个版本11,根据你的SOAP的规范来的

3. envelope.dotNet = false; 字面直译,我是用的JAX-WS

4. HttpTransportSE ht = new HttpTransportSE(wsUrl); 中间需要把localhost转为IP哦 android不能识别localhost哦

5. ht.call(soapAction, envelope); 很多文档说中间的soapAction 需要为null,但是我试了好像不行.

6. 关于Xml报文 应该是在ht.call(soapAction,envelope)之后产生,具体需要看下 ht.requestDump和responseDump

7. 关于获取返回值 很多文档中间写的getResponse() 我试过好像不行 记得一篇文档中博主对于两种方式的理解. 找到了 http://blog.sina.com.cn/s/blog_774be4790100qzg6.html 非常非常感谢博主

8. 还有很多例子用的是AndroidHttpTransport  

        但是我看了API没有看到相关的资料

9.  周俊个小菜菜喊我T实况了 上代码,WS 就参照https://netbeans.org/kb/docs/websvc/jax-ws_zh_CN.html

上代码 

public void doLogin(View v) {
        String username = etUsername.getText().toString();
        String password = etPassword.getText().toString();
        Toast.makeText(getApplicationContext(), password,
                Toast.LENGTH_SHORT).show();

        String wsUrl = "http://10.32.1.23:20769/LoginWS/LoginWS?WSDL";
        String methodName = "login";
        String namespace = "http://dataplatform.js.cpic.com/";
        String soapAction = namespace + methodName;
        /*
         String wsUrl = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
         String methodName = "getMobileCodeInfo";
         String namespace = "http://WebXml.com.cn/";
         String soapAction = namespace + methodName;
         */
        SoapObject request = new SoapObject(namespace, methodName);
        /*      request.addProperty("mobileCode", username);
         request.addProperty("userId", password);
         */
        request.addProperty("pUsername", username);
        request.addProperty("pPassword", password);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut = request;
        envelope.dotNet = false;
        envelope.setOutputSoapObject(request);
        HttpTransportSE ht = new HttpTransportSE(wsUrl);
        ht.debug = true;
        String response = "";
        try {
            // 第5步:调用WebService  
            ht.call(soapAction, envelope);
            Log.w(getClass().getName(), ht.requestDump);
            //  System.out.print(envelope.getResponse());
            SoapObject rpcObject = (SoapObject) envelope.bodyIn;
            response = rpcObject.getProperty(0).toString();
            vResult.setText(response);
            /*        if(envelope.getResponse()!=null){
                
             SoapObject tmpSoapObject = (SoapObject)rpsObject.getProperty(0); 
               
             Toast.makeText(getApplicationContext(), tmpSoapObject.getName(),
             Toast.LENGTH_SHORT).show();
             }
             **/

            // Intent showNextPage_Intent = new Intent();
            //           showNextPage_Intent.setClass(LoginActivity.this, ShowChartRzActivity.class);
            //           startActivity(showNextPage_Intent);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

感谢 看客挺我唠叨


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值