1

Soap サービスの wsdl で SUDZC から生成された LoginHandler を使用すると、次の出力のみが表示されます。

Login returned the value: OK

ただし、service.logging を有効にすると、次の出力が得られます。

<soap:Body>
  <LoginResponse xmlns="http://tempuri.org/">
     <LoginResult>OK</LoginResult>
     <authToken>
        <InnerToken>21017998-02fd-4ac9-b132-98c0cb2fd1bf</InnerToken>
     </authToken>
  </LoginResponse>

InnerToken 値を取得し、後続の SOAP 呼び出しのために保持する必要があります (つまり、service.headers メンバーに追加する必要があります)。上記の結果から InnerToken を取得する方法についてのアイデアはありますか?

次の LoginHandler コードフラグメントを使用しています。

- (void) LoginHandler: (id) value {
  // Handle errors
  if([value isKindOfClass:[NSError class]]) {
    NSLog(@"%@", value);
    return;
  }
  // Handle faults
  if([value isKindOfClass:[SoapFault class]]) {
    NSLog(@"%@", value);
    return;
  }
  // Do something with the NSString* result
  NSString* result = (NSString*)value;
  NSLog(@"Login returned the value: %@", result);
}
4

1 に答える 1

0

(生成された) SoapRequest.m ファイルで、次のように変更しました。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    ...
    if(self.handler != nil && [self.handler respondsToSelector: self.action]) {
        objc_msgSend(self.handler, self.action, output);
}

の中へ:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    ...
    if(self.handler != nil && [self.handler respondsToSelector: self.action]) {
        objc_msgSend(self.handler, self.action, element);
}

私の問題を解決しました!

于 2013-03-27T15:30:19.880 に答える