Sudzc iPhone SOAP - 如何使用此库自动生成的数据处理SOAP错误?

时间:2011-02-10 14:35:06

标签: iphone soap sudzc

我有一个响应,在异常的情况下返回SOAP错误。我想处理这个SOAP Fault。但是,通过反序列化SOAP响应得到的响应没有SOAP错误。

我使用Sudzc Library为我的网络服务生成目标C代码。

帮助将不胜感激。

谢谢,

普里亚

2 个答案:

答案 0 :(得分:2)

SoapRequest.m中似乎存在与Sudzc捆绑在一起的错误。

具体来说,如果你看看

- (void)connectionDidFinishLoading:(NSURLConnection *)connection;

方法并导航到以下代码:

id output = nil;
SoapFault* fault = [SoapFault faultWithXMLDocument: doc];

if([fault hasFault]) {
    if(self.action == nil) {
        [self handleFault: fault];
    } else {
        if(self.handler != nil && [self.handler respondsToSelector: self.action]) {
            [self.handler performSelector: self.action withObject: output];
        } else {
            NSLog(@"SOAP Fault: %@", fault);
        }
    }
}

您可以看到返回处理程序时输出始终为nil。

要解决此问题,您只需将SoapFault而不是输出返回到处理程序,如下所示:

...
[self.handler performSelector: self.action withObject: fault];
...

答案 1 :(得分:0)

在你的Sudzc返回处理程序方法中,你可以[idOfSoapObject isKindOfClass:[SoapFault class]]

如果您已经这样做了,那么我建议开启Logging:您的服务将具有.logging(BOOL)属性。这将记录完整的soap请求和响应。在这里,您可以手动检查故障的响应。