2011-12-27 95 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