ios 调用webservice整理

学iphone开发有一段时间了,对于我这个新手来说,学习过程中,遇到不少问题,尤其是webservice的调用一直困扰了很久,赶在光棍前夕之迹,谈谈个人在webservice方面遇到的问题以及解决方案~~跟大家分享一下,对于那些高手来说可以略过~~

也不知道这是人生中的第几个光棍节了,没有妹子,很纠结,没有遇到对的人,在爱情的等待中渐渐的发霉~~~~~~~~

在这里也祝单身的男银、女银们,在光棍节脱"光"~~~~废话不多说~~切入正题

一、简述

要调用webservice你想到的是什么?

(1)写一个调用webservice的类(可以自已写,也可以下载第三方的类库)

(2)对webservice返回的xml解析(ios自带的xml解析真的很烦)

       我在网上度娘了很网,都是看到有些人,要么只提供webservice的类,简单的说明一下,对于返回的数据xml,一字不提~~~用起他们写的类来,真的很冒烟啊~~~~,网上找到的一些答案,我觉得很奇怪,大牛们经常会写一句不明不白的话,要写就写清楚,否则干脆不要写~~~让人希望又失望~~我不觉得这样有多牛B。。。反而我更喜欢把复杂的事件简单化~~~

 我个人在调用webservice时遇到几个问题:

  a.webservice的命名空间问题?

      webservice默认的命名空间是:http://tempuri.org/

     我刚开始用得好好的,后来报soapAction不识别http://tempuri.org/~~~~那天花了一上午才找出这个错,原来有人改动了webservice的默认命名空间~~~我去你大爷的,改了命名空间,也不通知我,害我瞎折腾~~

  b.xml如何解析问题?

      本来是想用ios自带的类去解析xml的,网上查了一下,看别人写了一大片,脑门一片大汗,满脸黑线~~~,后来我用的是google写的GDataXML这个类库,还不错~~~,不过对于那些xml有命名空间的如何读取,各种坛子去提问,至今还没有人正确解答我~~~难道天朝就没有人知道吗?我失望至极,后来还是有如神助般醍醐灌顶~~~自已解决了,阿门~~~~

  c.异步调用时发生400错误?

     这个问题搞得我,头脑出现乱码,神经也被打茄了,你们猜这是啥原因~~~~

    soap原本要传递的信息是这样:

      <a>XXX</a><b>XXXX</b>

    我把它传递参数颠倒过来了,变成这样:

     <b>XXX</b><a>XXX</a>

     发现问题后,我傻楞般的笑了~~~~

  二、类的简要说明

(1)webservice(一个是使用NSURLConnection写的类,还有一个是ASIHttpRequest写的webservice调用类)

  a.同步调用

  b.异步调用

  c.返回数据的处理

     soap调用返回的数据经常放在:<webservice方法名Result>XXX</webservice方法名Result>中,我在webservice调用中已经直接提取出来了~~~提取出来的内容还是一个xml,这段内容的处理,我单独写在xml解析类里面

(2)xml解析类

 1.读取<方法名Result>XXX</方法名Result>的内容

 2.遍历xml的所有内容返回数组

三、使用配置

  (1)使用NSURLConnection写的webservice调用类,类名叫:WebServices.h

     包含的文件如下:

     a.AppConfigure.h文件的配置:

  b.google GDataXml配置如下:

     step1.先添加libxml2.dylib类库,不要告诉我这个都不会,拉去面壁~~~

     step2.操作如下图所示

 

  (2)借助ASIHttpRequest写的webservice调用类,类名叫:ServiceHelper.h

    跟(1)的配置一样,这里就不再重复说明,ASIHttpRequest要多添加几个类库,如下图所示

 四、文件下载

  (1)NSURLConnection类写的webservice调用类的所有文件下载

      http://dl.vmall.com/c0cld6ey99 [注:请下载demo里面的最新版本,有调整]

  (2)ASIHttpRequest类写的webservice调用类的所有文件下载

     http://dl.vmall.com/c0gx4evjva  [注:请下载demo里面的最新版本,有调整]

 五、demo下载      
demo下载地址: http://dl.vmall.com/c016bva6aw
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
调用WebService服务的方法有多种。一种方法是利用命令或工具将WebService提供的wsdl文件生成对应的java类,这样就可以像调用本地类一样调用WebService提供的接口。这种方法的优点是调用简单,无需自己编写太多的东西,但缺点是生成的代码过于庞大,不便于阅读。 另一种方法是使用不同的Java框架来调用WebService服务。例如,可以使用XFire框架进行调用。可以通过导入相关的包和编写相应的代码来调用WebService服务。以下是使用XFire框架调用WebService的示例代码: ``` import org.codehaus.xfire.client.Client; import java.net.URL; public class WebServiceTest { public static void main(String[] args) { try { // 服务地址 String url = "http://127.0.0.1:8080/service-test/services/gateway?wsdl"; // 方法名 String method = "invoke"; Client client = new Client(new URL(url)); Object[] result = client.invoke(method, new Object[]{"test", "queryOrder", "{\"tradeno\":\"1648100061003\",\"mchid\":\"10001\"}"}); System.out.println("服务调用结果:" + result<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [调用webservice服务方式总结](https://blog.csdn.net/liuyunyihao/article/details/125083983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值