Sudzc与iOS 5和ARC
我一直在尝试使用Sudzc工作的webservices。每当我将我的WSDL转换为obj-c而没有自动引用计数时,它就可以正常工作。问题是,我们现在正在iOS 5中构建所有应用程序,并且所有代码都使用ARC。 Sudzc现在也允许你创建一个启用了ARC的bundle,但是当我运行这个代码时它总是返回null。Sudzc与iOS 5和ARC
我试着调试Sudzc代码,它确实收到了服务返回的正确的xml响应。某处在翻译中丢失了某些东西。我尝试将没有ARC的工作Sudzc代码转换为启用ARC的代码,但只要我修复了所有错误,它就会再次返回空值。
有没有人遇到过这种情况,知道怎么回事?我可以节省大量时间,而不必自己调试整个Sudzc代码。
在我的情况下(SUDZC与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];
不知何故相应的功能被搜索的根元素名称为 “体”。检查肥皂包后,很容易看到根元素的名称是“soap:Body”。
在我的情况下,“env:Body”工作。检查你的返回XML(通过打印)并进行适当的替换
我的webService是使用Axis Eclipse在Java中创建的。
弧我用:"soapenv:Body"
,并在文件SoapObject.m我添加
#import "Soap.h"
#import "SoapObject.h"
对我来说,这是一个.NET Web服务(WCF),我不得不使用s:正文: 通过打印文档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
当找到勇气张贴问题,我找到了解决办法后总是12分钟。使用-no-objc-arc标记Sudzc类,现在我可以使用旧的工作代码。作为obj-c的一个相当新的用户,我不知道存在.. – Twan 2011-12-27 14:38:02
我遇到了同样的问题,可能是比你更新的用户:)我实在不知道你的意思是用-no -objc-arc,你能解释一下吗? – 2011-12-30 10:30:38
请考虑发布该答案并将其标记为已接受,以便此问题将被视为已解决。当你在这件事上时,你可能也想谈论@Stefan Jansson的评论。 – BoltClock 2011-12-30 11:08:08