1

例外が発生した場合に SOAP エラーを返す応答があります。この SOAP Fault を処理したい。しかし、SOAP レスポンスをデシリアライズして取得したレスポンスには SOAP Fault がありません。

Sudzc Library を使用して、Web サービス用の目的の C コードを生成しました。

助けていただければ幸いです。

ありがとう、

プリヤ

4

2 に答える 2

2

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);
        }
    }
}

ハンドラーに返されると、出力は常に nil になることがわかります。

この問題を解決するには、次のように出力の代わりに SoapFault をハンドラーに返すだけです。

...
[self.handler performSelector: self.action withObject: fault];
...
于 2011-04-12T09:49:27.583 に答える
0

Sudzc return Handler Method では、[idOfSoapObject isKindOfClass:[SoapFault class]] を実行できます。

すでにこれを行っている場合は、Logging on をお勧めします。サービスには.logging(BOOL) プロパティがあります。これにより、完全な SOAP 要求と応答がログに記録されます。ここで、エラーの応答を手動で確認できます。

于 2011-02-10T14:51:59.267 に答える