2011-12-27 50 views
10

我一直在尝试使用Sudzc工作的webservices。每当我将我的WSDL转换为obj-c而没有自动引用计数时,它就可以正常工作。问题是,我们现在正在iOS 5中构建所有应用程序,并且所有代码都使用ARC。 Sudzc现在也允许你创建一个启用了ARC的bundle,但是当我运行这个代码时它总是返回null。Sudzc与iOS 5和ARC

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

有没有人遇到过这种情况,知道怎么回事?我可以节省大量时间,而不必自己调试整个Sudzc代码。

+0

当找到勇气张贴问题,我找到了解决办法后总是12分钟。使用-no-objc-arc标记Sudzc类,现在我可以使用旧的工作代码。作为obj-c的一个相当新的用户,我不知道存在.. – Twan 2011-12-27 14:38:02

+0

我遇到了同样的问题,可能是比你更新的用户:)我实在不知道你的意思是用-no -objc-arc,你能解释一下吗? – 2011-12-30 10:30:38

+0

请考虑发布该答案并将其标记为已接受,以便此问题将被视为已解决。当你在这件事上时,你可能也想谈论@Stefan Jansson的评论。 – BoltClock 2011-12-30 11:08:08

回答

16

在我的情况下(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”。

+3

非常感谢您谢谢!我被困在同一个问题上两天,这是我需要的修复。 – 2012-01-14 21:45:05

+0

非常感谢!修复它对我来说 – Mattias 2012-01-22 17:23:09

+0

谢谢。另外,如果这个ilyasd不起作用,请尝试使用'@“soapenv:Body”'而不是'@“soap:Body”'。 – inket 2012-02-17 11:24:55

0

在我的情况下,“env:Body”工作。检查你的返回XML(通过打印)并进行适当的替换

1

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

弧我用:"soapenv:Body"

,并在文件SoapObject.m我添加

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

对我来说,这是一个.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