最近总结的一些经验,对于android或java中使用webservice接口的一些心得。不过需要注意的是,在android中,以下代码需要在子线程中使用。好了,废话不多说了,直接上代码,只是一个代码块,输出结果需要自己查看一下日志

这个是一个天气查询的webservice接口,大家也可以尝试一下。不让发是么。。www.webxml.com.cn/WebServices/WeatherWebService.asmx
需要注意一下,下面的代码需要ksoap2-android-assembly的jar包,自己百度搜索下载一下吧。算了,想了想还是给贴上吧,我自己的网盘
pan.baidu.com/s/1qXBrPkK 密码:atri

上面连接可能失效,到时候请大家自己搜索下载吧,csdn上面应该有,上面是2个版本的,一个老版本,一个较新的,我用的是老版本的,新版本暂时没试过
我实例中使用的是getSupportCity方法
以下代码是我直接从android studio上面拷贝的,第一次写这个,
不太会搞。

String namespace = "http://WebXml.com.cn/";String transUrl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";String method = "getSupportCity";//注意版本使用,这个需要跟后台询问或者从wsdl文档或者服务说明中查看int envolopeVersion = SoapEnvelope.VER12;//可能是namspace+method拼接String soapAction = "http://WebXml.com.cn/getSupportCity";SoapObject request = new SoapObject(namespace, method);//参数一定注意要有序,尽管是addProperty(),不要当作HttpUrl可以使用LinkedHashMap封装request.addProperty("byProvinceName", "湖北");//                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(envolopeVersion);envelope.setOutputSoapObject(request);envelope.dotNet = true;HttpTransportSE se = new HttpTransportSE(transUrl);try {    //                    se.call(soapAction, envelope);    //ver11,第一个参数不能为空    se.call(null, envelope);//envolopeVersion为ver12第一个参数可以为空,必须接口支持ver12才行    SoapObject response = (SoapObject) envelope.bodyIn;    //response的处理需要根据返回的具体情况,基本都要进行下面一步    SoapObject o = (SoapObject) response.getProperty(0);    //当前方法返回的结果为一个数组    Log.e("zjy", "MainActivity.java->run(): size=" + o.getPropertyCount());    for (int i = 0; i < o.getPropertyCount(); i++) {        Log.e("zjy", "MainActivity.java->run(): ==" + o.getPropertyAsString(i));    }} catch (IOException e) {    e.printStackTrace();} catch (XmlPullParserException e) {    e.printStackTrace();}

 对于代码注释看不太明白的,请结合下面的图片一起理解,谢谢。对于上述代码返回的结果,不同的webservice接口可能不一样,需要多跟后台沟通,我用的接口都是后台大哥帮我转成json数据了的,好人呐。在此不禁要赞后台大哥一下:荣哥威武!!!
下面是一张图片,对上述代码中的参数的对应,这个是wsdl文档,就是在地址后面加?wsdl之后得到的,也有另外一种的查看方式,我也会贴上。
推荐看wsdl文档,包含的信息量更大,也更精准,虽然有些我也不知道是啥意思,当然了大家一起研究。上面的图片中没有说到soapAction,下面马上贴上。以下也是在wsdl文档里面,一般在最下面wsdl:binding标签。android中主要是用到下面的图片中的soap和soap12结尾的,分别对应Ver11和Ver12,就是上面
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(envolopeVersion);
构造方法中传入的envolopeVersion
展开第一个WeatherWebServiceSoap可以看到每个方法对应的soapAction,看下图

刚刚说好给大家看另外一种简单的办法的,下面来了。正常大家进入这个webservice之后点击每一个方法会出现下面的描述,注意不是所有的webservice接口都是有这样的描述的,所以还是请大家多看wsdl文档。这个是ver11的,ver12类似,只是不用传soapAction。
好了,大概也就这些东西了,有什么问题我看到了会回复,但是也不一定哈,看见了就回了。基本没问题了,完工。
还请大家自己也多思考一下,我上面用到的东西基本都已经说清楚了,一遍不懂可以多看两遍

更多相关文章

  1. Android中 AIDL 的简单实用例子
  2. Android(安卓)Service更新UI的方法之AIDL
  3. Android(安卓)在代码中控制View的填充方式和宽度、高度
  4. 测试freg驱动的功能内置C程程序
  5. 绝对精品—史上最全最权威的Android(安卓)Studio插件整理
  6. Android:IPC之AIDL的学习和总结
  7. Android程序开发通过HttpURLConnection上传文件到服务器
  8. 现有的Android(安卓)原生项目里面集成RN 页面的学习和踩坑之路
  9. 非android的平台获取apk信息

随机推荐

  1. Android(安卓)TextView中链接(link)点击
  2. Android(安卓)little error records
  3. android性能测试工具
  4. Android(安卓)SDK和最新ADT下载地址 + 环
  5. Eclipse Indigo - Cannot install Androi
  6. android logo:内核、android开机动画
  7. android简单Logo
  8. android 自定义加减按钮
  9. android 动态壁纸 2
  10. spring android 编译环境搭建