我有一个响应,它会在出现异常时返回 SOAP 错误。我想处理这个 SOAP 错误。但是,我通过反序列化 SOAP 响应得到的响应没有 SOAP 错误。
我使用 Sudzc 库为我的 Web 服务生成目标 C 代码。
帮助将不胜感激。
谢谢,
普里亚
与 Sudzc 捆绑的 SoapRequest.m 中似乎存在一个错误。
具体来说,如果你看一下
- (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);
}
}
}
您可以看到,当返回到处理程序时,输出将始终为零。
要解决此问题,您可以简单地将 SoapFault 而不是输出返回到您的处理程序,如下所示:
...
[self.handler performSelector: self.action withObject: fault];
...
在您的 Sudzc 返回处理程序方法中,您可以 [idOfSoapObject isKindOfClass:[SoapFault class]]
如果您已经这样做了,那么我建议您打开 Logging:您的服务将具有.logging
(BOOL) 属性。这将记录完整的肥皂请求和响应。您可以在此处手动检查响应是否存在故障。