10

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

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

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

4

4 回答 4

16

就我而言(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”。

于 2012-01-02T10:13:31.190 回答
1

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

对于弧我使用:"soapenv:Body"

在文件 SoapObject.m 我添加

#import "Soap.h"
#import "SoapObject.h"
于 2012-05-23T10:27:08.780 回答
0

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

于 2012-04-29T21:04:12.633 回答
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

于 2012-08-07T12:23:48.860 回答