我的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);
}
这解决了我的问题!