我的sudzc loginHandler只返回NSString。如何获取返回的Innertoken?

问题描述:

当我使用SUDZC上一个SOAP服务的WSDL生成的LoginHandler, 我只能看到下面的输出:我的sudzc loginHandler只返回NSString。如何获取返回的Innertoken?

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

在(生成)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); 
} 

这解决了我的问题!