使用ksoap2 调用 WebSer…
来源:互联网 发布:mac进入屏保快捷键 编辑:程序博客网 时间:2024/06/07 00:50
感慨技术太多了:有axis2和xfire,jax-ws,ksoap2均可以实现这个功能
ksoap2是一个soapweb service客户端包。主要用于资源受限制的Java环境如Applets或J2ME应用程序以及Android等等(CLDC/CDC/MIDP)。
ksoap2-android这个开源项目为Android平台提供了一个轻量级和高效的SOAP类库。它是kSOAP2的一个分枝。本文以ksoap2-android的jar包来调用webservice
ksoap2-j2me项目地址:http://sourceforge.net/projects/ksoap2/
ksoap2-j2me当前最新版本为2.1.2
ksoap2-android项目地址:http://code.google.com/p/ksoap2-android/
ksoap2-android当前最新版本为2.6.5 下载地址:ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar
个人认为ksoap2和axis2或xfire等有几个区别:
1、axis2和xfire而ksoap2则非常小,只有150kb左右,所以ksoap2主要应用于资源受限制的java环境。
2、axis2 可以都会通过wsdl去生成客户端代码。但是ksoap2 得自己手动编写客户端代码(不过也非常简单就是);
下面我以ksoap2-android来调用天气预报web服务:
首先我们找一个免费的天气预报Web服务,通过Google搜索,我找到的是:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
从这个服务的后缀名我们可以知道,这个Web服务是由.net开发的,之后再程序中需要做一些小的设置(如果是java开发的,后缀名为jws,后缀名为wcf的也是.net开发)
这个天气预报的服务提供了5个操作,我们就调用第四个getWeatherbyCityName,我们点击服务说明,看看这个天气预报的wsdl
从文档中,我们可以获得wsdl的uri,namespace,以及soap协议版本号
再往下拉动滚动条,找到我们要调用的方法的描述:
可以得到方法名称,参数键,类型
参数键可以理解为:http://localhost:8080/myapp/a.jsp?theCityName=xxxx
代码:
- package
com.xcy.client; -
- import
java.io.IOException; -
- import
org.ksoap2.serialization.SoapObject; - import
org.ksoap2.serialization.SoapSerializationEnvelop e; - import
org.ksoap2.transport.HttpTransportSE; - import
org.xmlpull.v1.XmlPullParserException; -
-
- public
class Client { -
static void main(String[] throwsargs) IOException, XmlPullParserException { -
String WSDL_URI = 的uri -
String namespace = -
String methodName = -
-
SoapObject request = SoapObject(namespace, methodName); -
request.addProperty( "上海");//参数 -
-
-
e 对象,同时指定soap版本号(之前在wsdl中看到的) -
SoapSerializationEnvelop e envelope = SoapSerializationEnvelop e(SoapSerializationEnvelop e.VER12); -
envelope.bodyOut = request; -
envelope.dotNet = -
-
HttpTransportSE httpTransportSE = HttpTransportSE(WSDL_URI); -
httpTransportSE.call( envelope); //调用 -
-
SoapObject response = (SoapObject) envelope.getResponse(); -
-
System.out.println(response); -
} -
-
} - }
package com.xcy.client;import java.io.IOException;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;import org.xmlpull.v1.XmlPullParserException;public class Client { public static void main(String[] args) throws IOException, XmlPullParserException { String WSDL_URI = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL";//wsdl 的uri String namespace = "http://WebXml.com.cn/";//namespace String methodName = "getWeatherbyCityName";//要调用的方法名称 SoapObject request = new SoapObject(namespace, methodName); request.addProperty("theCityName", "上海");//参数 //创建SoapSerializationEnvelop e 对象,同时指定soap版本号(之前在wsdl中看到的) SoapSerializationEnvelop e envelope = new SoapSerializationEnvelop e(SoapSerializationEnvelop e.VER12); envelope.bodyOut = request;//由于是发送请求,所以是设置bodyOut envelope.dotNet = true;//由于是.net开发的webservice,所以这里要设置为true HttpTransportSE httpTransportSE = new HttpTransportSE(WSDL_URI); httpTransportSE.call(null, envelope);//调用 SoapObject response = (SoapObject) envelope.getResponse();//获得返回对象 if(response!=null){ System.out.println(response); } }}
结果:
anyType{string=直辖市; string=上海; string=58367; string=58367.jpg;string=2012-7-20 0:24:35; string=27℃/34℃; string=7月20日 雷阵雨转多云;string=东南风3-4级; string=4.gif; string=1.gif;string=今日天气实况:气温:28℃;风向/风力:西风 1级;湿度:77%;空气质量:良;紫外线强度:中等;string=穿衣指数:天气炎热,建议着短衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫等清凉夏季服装。
感冒指数:暂无。
运动指数:有降水,风力较强,较适宜在户内开展低强度运动,若坚持户外运动,请选择避雨防风地点。
洗车指数:不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。
晾晒指数:有降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。
旅游指数:风稍大,较热。有雷阵雨,外出请注意防雷并携带雨具,注意防暑降温。
路况指数:有降水,路面潮湿,车辆易打滑,请小心驾驶。
舒适度指数:天气较热,虽然有降水,但仍然无法削弱较高气温给人们带来的暑意,这种天气会让您感到不很舒适。
空气污染指数:气象条件有利于空气污染物稀释、扩散和清除,可在室外正常活动。
紫外线指数:属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。;string=28℃/35℃; string=7月21日 多云转晴; string=东南风3-4级转4-5级;string=1.gif; string=0.gif; string=28℃/36℃; string=7月22日 多云转晴;string=东南风4-5级; string=1.gif; string=0.gif;string=上海简称:沪,位置:上海地处长江三角洲前缘,东濒东海,南临杭州湾,西接江苏,浙江两省,北界长江入海,正当我国南北岸线的中部,北纬31°14′,东经121°29′。面积:总面积7823.5平方公里。人口:人口1000多万。上海丰富的人文资源、迷人的城市风貌、繁华的商业街市和欢乐的节庆活动形成了独特的都市景观。游览上海,不仅能体验到大都市中西合壁、商儒交融、八方来风的氛围,而且能感受到这个城市人流熙攘、车水马龙、灯火璀璨的活力。上海在中国现代史上占有着十分重要的地位,她是中国共产党的诞生地。许多震动中外的历史事件在这里发生,留下了众多的革命遗迹,处处为您讲述着一个个使人永不忘怀的可歌可泣的故事,成为包含民俗的人文景观和纪念地。在上海,每到秋祭,纷至沓来的人们在这里祭祀先烈、缅怀革命历史,已成为了一种风俗。大上海在中国近代历史中,曾是风起云涌可歌可泣的地方。在这里荟萃多少风云人物,散落在上海各处的不同住宅建筑,由于其主人的非同寻常,蕴含了耐人寻味的历史意义。这里曾留下许多革命先烈的足迹。瞻仰孙中山、宋庆龄、鲁迅等故居,会使您产生抚今追昔的深沉遐思,这里还有无数个达官贵人的住宅,探访一下李鸿章、蒋介石等人的公馆,可以联想起主人那段显赫的发迹史。;}
- 使用ksoap2 调用 WebSer…
- 使用BBED修改SCN …
- 使用SAP memory 调用标…
- 使用 Oracle Universal Installer …
- 使用 Tortoise SVN 创建 Ext…
- 使用KSOAP2调用WebService
- jdbc 调用 sql ser…
- html 调用 java代码 利用数字签名…
- 使用 Apache OpenJPA 开发 EJB 3.0…
- 集线器 交换机 路由器 网桥 …
- 【PHP 使用 CURL 同步抓取多個網頁…
- objective-c 如果使用了release …
- FW: HTML5 WebSockets 基础使用教…
- 随笔『使用ActiveReport for .net …
- 解决使用 JDK 1.7 …
- 使用 EXPLAIN PLAN&nbsp…
- oracle 使用explain plan分析查询…
- Kettle 使用备忘录 2- bigdata版本…
- ibatis基础上添加memcached缓存
- 二分图的最大权匹配
- Web服务入门之一:通过Xfire创建本…
- 如何设置其它进程中listctrl控件CHECKBOX的选中状态
- Axis2创建WebService实例
- 使用ksoap2 调用 WebSer…
- JS页面的跳转及刷新
- Windows安装memcached图文教程
- Siebel集成 - 符号URL的使用
- Qt 学习之路2(46)视图和委托---代码实现
- java使用memcached
- Memcache是什么
- 网络层协议
- ip理解