加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService for Android

发布时间:2020-12-17 00:57:49 所属栏目:安全 来源:网络整理
导读:首先下载KSOAP包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar包 把下载的KSOAP包放在android项目的lib目录下 这个也就不多做介绍了,网上一大堆,具体实现步骤如下: 第一步:先实例化SoapObject对象 1、命名空间: serviceNameSpace 2、调用

首先下载KSOAP包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar包
  把下载的KSOAP包放在android项目的lib目录下

这个也就不多做介绍了,网上一大堆,具体实现步骤如下:

第一步:先实例化SoapObject对象
  1、命名空间:serviceNameSpace
  2、调用方法:methodName
? ? ???SoapObject request=new?SoapObject(serviceNameSpace,?methodName);?

第二步:如果有参数的话,设置调用方法的参数
?????? request.addProperty("参数名称","参数值");

第三步:设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用的webService中版本号一致):
  SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

第四步:注册Envelope,
  (new MarshalBase64()).register(envelope);

第五步:构建传输对象,并指明WSDL文档URL:
  String serviceURL = "http://webservice.WebXml.com.cn/WebServices/WeatherWS.asmx";
  AndroidHttpTransport ht = new AndroidHttpTransport(serviceURL);
  ht.debug = true;
  
第六步:调用WebService(其中参数为1:命名空间+方法名称,2:Envelope对象):
  ht.call(serviceNameSpace+methodName,envelope);

看起来还是很抽象的,实例介绍下:

这是我写的一个WebServiceUtil类,具体实现调用webService的步骤

WebServiceUtil
 1 public class WebServiceUtil {
2 private SoapObject detail;
3
4 /**
5 *
6 * @param namespace 命名空间
7 * @param methodname 调用方法
8 * @param URL 请求URL
9 * @param map 用来存放调用方法的参数
10 * @return 返回SoapObject
11 */
12 static SoapObject getResult(String namespace,String methodname,
13 String URL,Map map) {
14 //实例化SoapObject对象
15 SoapObject so = new SoapObject(16 如果有参数,设置调用方法参数17 Set keySet = map.keySet(); 返回键的集合18 Iterator it = keySet.iterator();
19 while (it.hasNext()) 第一种迭代方式取键值20 {
21 Object key = it.next();
22 so.addProperty(key.toString(),map.get(key));
23 }
24
25 获得序列化的Envelope26 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
27 SoapEnvelope.VER11);
28 envelope.bodyOut = so;
29 envelope.dotNet = true;
30 envelope.setOutputSoapObject(so);
31
32 Android传输对象33 HttpTransportSE ht = new HttpTransportSE(URL);
34 ht.debug = 35
36 try {
37 调用WebService(其中参数为1:命名空间+方法名称,2:Envelope对象)38 ht.call(namespace + methodname,envelope);
39 返回SoapObject40 return (SoapObject) envelope.getResponse();
41 } catch (IOException e) {
42 TODO Auto-generated catch block43 e.printStackTrace();
44 } catch (XmlPullParserException e) {
45 46 47 }
48 return null;
49 }
50 }


然后基于这个类,我们可以很方便的调用Webservice

下面是一个调用天气预报的例子,呵呵,基本上关于这方便的案例都是天气预报,我也俗一回吧

WebServiceHelper
class WebServiceHelper {
命名空间 3 private static final String namespace = "http://WebXml.com.cn/";
访问URLfinal String URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx";
6
7 static SoapObject getWeatherByCity(String city){
8 调用方法 String methodname = "getWeather";
10 定义一个map,用来存放方法参数,键代表方法名,值代表方法值 Map map = new HashMap();
12 map.put("theCityCode",city);
13 调用getResult获得SoapObject14 SoapObject result = WebServiceUtil.getResult(namespace,methodname,URL,map);
15 输出结果16 System.out.println(result);
17 return result;
18 }
19
20 }


然后我们运行程序,就会看到我们查找到的内容了,写的比较简单,你们可以根据需要来进行进一步的解析

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读