老菜鸟迈出的第一步——Android调用WebService碰到的种种问题

来源:互联网 发布:金融网络销售做不得 编辑:程序博客网 时间:2024/06/13 10:53

首先声明本人是个菜鸟,菜到什么程度?我马士兵的java教学视频javase部分还没看完,郭霖的《第一行代码》我才看了不超过20页。就是这样的菜鸟以一个企业网管的身份接到了经理给我出的练习题,因为公司需要翻新一下一个用到WebService的应用,让我研究玩玩~~~

我写博客是为了记录我为之头大了很多天才解决的问题,真心的不希望和我一样的菜鸟再花跟我一样多的时间来解决跟我一样的问题~

如果百度上能轻易的搜到这些问题的解决办法,我也不会厚着脸皮以一只老菜鸟的身份来CSDN写博客~~~我的知识点都没学完,所以有表达错误的地方请大家谅解~


我解决问题的思路:

第一步:搞清楚webservice是什么

第二步:找一个android调用webservice的实例测试成功

第三步:更改测试成功实例的参数,变为我需要调用的webservice的参数

说白了就是把别人的代码拿过来改下参数,so easy!


谁知道这么easy的东西,我最终花了半个月才捣鼓成功~~~

我遇到的问题:

1.Android4.0后不能再在主线程中进行网络请求了!

意味着要分线程写~所以网上百度出来的那些号码归属地查询天气预报之类的例子都过时了!过时了!过时了!~~~你们这些大神可能不知道这对于菜鸟来说意味着什么~真是太致命了!找不到测试成功的例子就没法继续,因为我没有任何基础去自己解决问题~~~

2.URL中的http://webservice/....应该改成http://ws...


即使分线程你们以为就能运行了么?还有域名也改了!改了!改了!~~~

3.以上2个问题导致我偏离了最初的思路

快被坑疯了的我开始像只没头苍蝇一样的乱撞~时而继续查找可执行的程序,时而自己尝试着写代码,我开始研究调用方法,通过教学视频我了解到调用WebService有很多种方法,其中一个方法是最简单的,用java自带的wsimport自动生成java客户端程序,很简单的实现了WebService的调用,那一个激动啊~!~可惜的是不能用于android!~不能用于android!~不能用于android!~貌似因为类库的问题

4.android不支持java中的某些类库所以google提供了一个三方类库 KSOAP2,这个库在前面测试程序的时候就下了,但是我下载的版本貌似不对,还是在百度第一个英文网站上下载的


现在看看是j2me版本的,而大多数例子里都是用的j2se版本的把,所以才会有"HttpTransportSE"这个类而j2me里是“HttpTransport”没有“SE”~效果不知道是不是一样~但我最终还是重新下了se的版本貌似是3.5~~

5.说到底还是没找到可以成功运行的例子,重新开始系统的学又不知道要学到什么时候才能把这APP功能实现,所以在我折腾了数天折腾的头大想吐血的情况下,还是回到了最初的思路上来,不知道怎么的就搜到了这么一篇博客


看了一下他提到了4.0后要分线程写的问题,心中大喜,赶紧下载了他分享的github上的代码,把wsdl文件的url上的webservice改成ws,然后测试成功!那叫一个开心吆!~~

6.下面就是一个改参的问题

1)wsdl的url到底要不要加“?wsdl”           我测试的结果:加不加都一样能用,如果有不同请大神指教

2)soapAction到底是null还是wsdl里的soapAction? 我测试的结果:要写wsdl里的soapAction才能得到结果,写null没有得到结果

3)soap协议的版本到底写VER10还是VER11还是VER12呢? 我的测试结果:我soap应该是11,我改成VER12就不行,但是我改成VER10还是可以运行,没有深究 ,我是之前下载了一个叫soapUI的工具里看到的,但是我不会用它

4)addProperty()里到底传什么?  我的测试:我的wsdl文档里看不到要传什么参数,但是确实要传,网上我也百度了怎么回事,只查到说有的框架写出来的webservice生成的wsdl文档里没有参数,比如我知道要传一个叫data的参数,参数类型是String,我的代码是 request.addProperty("data","XXXXXXX"),如果是int类型request.addProperty("data",12345) ,应该是这样的格式

7.还遇到了Eclipse JavaEE 版本里有个叫web service explorer工具的问题,我按教学里的点击wsdl page确跳不出来东西,还是UDDI的,页面上是 "open registry"什么东东的,后来才知道是bug,重新下载一个最新版本的Eclipse 就好了

8.还有wsdl2java这个工具,听说能自动生成android客户端代码,的确生成了一堆java文件,但是我不会用,而且也不想用,因为里面的参数全都带wsdl2android什么的,看着都烦人

9.话说soapUI这个工具的确可能很好用,但是呢我们经理做的webservice要传的data的string类型参数其实是个xml,我不知道怎么传,怎么试都不对,后来也就放弃了


我知道webservice本身存在很多缺陷,而且现在有很多改良的技术,但是我知道肯定还会有人和我一样在学习它,希望我的这些经验能给他们提供帮助,不要在这些小问题上浪费时间

今后等我NB了,我会回来更新这篇文章

0 0