使用iOS 5和ARC的Sudzc

时间:2011-12-27 14:20:50

标签: ios5 automatic-ref-counting sudzc

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

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

有没有人遇到这个,知道出了什么问题?节省我的时间,而不必自己调试整个Sudzc代码。

4 个答案:

答案 0 :(得分:16)

在我的情况下(使用ARC for SOS的SUDZC),我已经替换了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”。

答案 1 :(得分:1)

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

FOR ARC我使用:"soapenv:Body"

在SoapObject.m文件中我添加

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

答案 2 :(得分:0)

在我的案例中,“env:Body”奏效了。检查您的返回xml(通过打印)并正确替换

答案 3 :(得分:0)

在我的情况下,它是一个.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