我有一个响应,在异常的情况下返回SOAP错误。我想处理这个SOAP Fault。但是,通过反序列化SOAP响应得到的响应没有SOAP错误。
我使用Sudzc Library为我的网络服务生成目标C代码。
帮助将不胜感激。
谢谢,
普里亚
答案 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请求和响应。在这里,您可以手动检查故障的响应。