【问题标题】:Sudzc with iOS 5 and ARC带有 iOS 5 和 ARC 的 Sudzc
【发布时间】:2011-12-27 14:20:50
【问题描述】:

我一直在尝试使用 Sudzc 让 Web 服务正常工作。每当我在没有自动引用计数的情况下将 WSDL 转换为 obj-c 时,它就可以正常工作。问题是,我们现在在 iOS 5 中构建我们所有的应用程序,我们所有的代码都使用 ARC。 Sudzc 现在还允许您创建启用了 ARC 的包,但是当我运行此代码时,它总是返回 null。

我尝试调试 Sudzc 代码,它确实收到了来自服务的正确 xml 响应。翻译中有些东西丢失了。我尝试将没有 ARC 的工作 Sudzc 代码转换为启用 ARC 的代码,但是一旦我修复了所有错误,它就会再次返回 null。

有没有人遇到过这种情况并知道出了什么问题?无需自己调试整个 Sudzc 代码,可以节省大量时间。

【问题讨论】:

  • 和往常一样,在鼓起勇气发布问题 12 分钟后,我找到了解决方案。用 -no-objc-arc 标记了 Sudzc 类,现在我可以使用旧的工作代码。作为一个相当新的 obj-c 用户,我不知道它的存在..
  • 我遇到了同样的问题,可能是比你新的用户 :) 老实说,我不知道你用 -no-objc-arc 标记是什么意思,你能解释一下吗?
  • 考虑将其发布为答案并将其标记为已接受,以便该问题被视为已解决。在此过程中,您可能还想解决 @Stefan Jansson 的评论。

标签: ios5 automatic-ref-counting sudzc


【解决方案1】:

就我而言(SUDZC with ARC for IOS),我已经替换了 SoapRequest.m 文件中的以下代码;

CXMLNode* element = [[Soap getNode: [doc rootElement] withName:@"Body"] childAtIndex:0];

CXMLNode* element = [[Soap getNode: [doc rootElement] withName:@"soap:Body"] childAtIndex:0];

不知何故,相应的函数正在搜索名为“Body”的根元素。检查肥皂信封后,很容易看到根元素的名称是“soap:Body”。

【讨论】:

  • 谢谢谢谢谢谢!我在同样的问题上被困了两天,这就是我需要的修复。
  • 非常感谢!为我修好了
  • 谢谢。另外,如果这个 ilyasd 不起作用,请尝试 @"soapenv:Body" 而不是 @"soap:Body"
  • 刚遇到同样的问题,上面的修复解决了这个问题:)
  • 仅供参考,这仅在实际命名空间是“soap”时才有效,只要它在 XML 文档中正确声明,它是完全合法的。例如,您可以拥有<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">,这将需要@"s:Body"<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">,这将只是@"Body"
【解决方案2】:

我的 webService 是使用 Axis Eclipse 在 Java 中创建的。

对于 ARC,我使用:"soapenv:Body"

我在 SoapObject.m 文件中添加

#import "Soap.h"
#import "SoapObject.h"

【讨论】:

    【解决方案3】:

    在我的情况下,“env:Body”有效。检查您的返回 xml(通过打印)并适当替换

    【讨论】:

      【解决方案4】:

      在我的例子中,它是一个 .Net Web 服务 (WCF),我必须使用 s:Body: 通过打印CXML文档发现:

      CXMLNode* test = [doc rootElement];
      NSLog(@"%@",test);
      

      我得到了这个:

      <CXMLElement 0x68c1a50 [0x68c1b10] s:Envelope <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><**s:Body**><GetUserIDResponse xmlns="http://tempuri.org/"><GetUserIDResult>8</GetUserIDResult></GetUserIDResponse></s:Body></s:Envelope>>
      

      感谢以前的帖子,我能够找到它并在我的博客上再次发布完整的答案:http://www.dailycode.info/Blog/post/2012/08/07/SUDZC-webservices-always-return-0-(WCF-web-service-and-IOS-client).aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多