• 基于Ksoap2调用Web service服务


      最近做一个项目,中间有用到Android端使用Asp.Net写的Webservice。用了比较常用的Ksoap2类库。可以通过下面地址下载

     http://code.google.com/p/ksoap2-android/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+Size+DownloadCount

    在Eclipse工程中引用这个jar包即可。

      下面使用KSOAP2的步骤来编写调用WebService的客户端程序,代码如下:

     1 //new 一个连接Webservice的类,这个类下面给出。webserviceUrl为//Webservice的连接地址,nameSpace为命名空间
     2 private ConWebService conWebService = new ConWebService(
     3             webserviceUrl ,nameSpace);
     4 
     5 //给出一个中间层调用的方法,返还String数组
     6 public ArrayList<String> getDate(String key)
     7     {
     8         ArrayList<String> arrayList = new ArrayList<String>();
     9                 //添加参数,这个参数可以是多个循环添加即可
    10                 //11                 //PropertyInfo pro[] = new PropertyInfo[2];
    12         //for (int i = 0; i < 2; i++)
    13         //{
    14             //pro[i] = new PropertyInfo();
    15         //}
    16         //pro[0].setName("sqlName");
    17         //pro[0].setValue(sqlName);
    18         //pro[1].setName("date");
    19         //pro[1].setValue(date);
    20     PropertyInfo pro = new PropertyInfo();
    21     pro.setName("key");
    22         pro.setValue(key);
    23     arrayList =conWebService.getSoapData("getData", pro);
    24         return arrayList;
    25     }

    下面的这个ConWebservice类是主要实现获取数据的功能了。给出关键代码

     1 public ArrayList<String> getSoapData(String methodName, PropertyInfo... pros)
     2     {
     3         ArrayList<String> resultList = new ArrayList<String>();
     4         
     5         //1.创建SoapObject对象,并指定WebService的命名空间和调用的方法名 
     6         SoapObject soapObject = new SoapObject(NameSpace, methodName);
     7         
     8         //2.设置SoapAction
     9         soapAction = NameSpace + methodName;
    10         
    11         //2.设置WebService方法的参数(以不定参数为例) 
    12         if (pros.length > 0)
    13         {
    14             for (PropertyInfo pro : pros)
    15             {
    16                 soapObject.addProperty(pro);
    17             }
    18         }
    19         //创建SoapSerializationEnvelope对象,生成调用WebService方法的SOAP请求信息,并指定WebService Soap协议的版本 
    20         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER12 );
    21 
    22         
    23         //设置bodyOut属性    (SoapEnvelope类中,设置发送的数据和接收数据,分别使用方法:bodyOut,bodyIn)
    24         envelope.bodyOut = soapObject;
    25 
    26         // 设置是否调用的是DotNet开发的WebService
    27         envelope.dotNet = true;
    28 
    29         //创建HttpTransportSE对象,并指定WSDL文档的URL 
    30         HttpTransportSE transport = new HttpTransportSE(WebserviceUrl);
    31         try
    32         {
    33             transport.call(soapAction, envelope);
    34             if (envelope.getResponse() != null)
    35             {
    36                 // 获取服务器返回的SOAP消息————接收数据
    37                 SoapObject result = (SoapObject) envelope.bodyIn;
    38                 
    39                 //getProperty这个方法相当取中间参数名为soapObject.getName() + "Result"的value,当然也可以按索引取值
    40                 SoapObject detail = (SoapObject) result.getProperty(soapObject.getName() + "Result");
    41                 
    42                 // 解析服务器的SOAP消息
    43                 int count = detail.getPropertyCount();
    44                 for (int i = 0; i < count; i++)
    45                 {
    46                     resultList.add(detail.getProperty(i).toString());
    47                 }
    48 
    49             }50         }    

    基本上每行都有注释,就不多废话了。

    当然,我这个Webservice传送过来的是一个String。当然,如果对不限XML复杂的话,也可以试试解析解析XML。

  • 相关阅读:
    node基础(2)
    node基础知识(1)
    面试题1
    HTML5中的表单属性
    H5中元素的拖放
    Niagara基于javascript的控件开发
    CSS居中
    2018-3-21 url 、href、src
    2018-3-7 色彩的一些知识
    JS基本数据类型
  • 原文地址:https://www.cnblogs.com/HTWorking/p/Webservice.html
Copyright © 2020-2023  润新知