【发布时间】:2010-11-08 00:20:32
【问题描述】:
我会尽力解释发生了什么。我正在开发的应用程序广泛依赖于肥皂服务。由于我对不同的服务进行了如此多的调用,我想我会尝试创建自己的 web 服务类。我的新类名为 SoapServiceRequest。我已经定义了一些实例变量以及一种方法。这个方法有 4 个参数: 1) 用户名 2) 密码 3)serviceName(soap服务器上定义的服务) 4) withData(数据发送到soap服务器)
我创建了这个类的一个实例,传入了所需的 4 个参数,但该方法在中途停止运行。此方法执行以下操作...
构建soap消息 设置 URL 和连接 发送数据 将响应发送回 App(转储到 NSLog) 当调用“-(void)connectionDidFinishLoading:(NSURLConnection *)connection”方法时,我正在设置一个 XMLParser 来解析返回的数据。然后 NSXMLParser 将调用它的委托方法。我没有看到 XmlParser 着火。
SoapServiceRequest 类定义了 XMLParser。看来这没有被调用。我想设置这个类并覆盖我其他子类中的几个方法。
例如。我正在通过网络服务从我的应用程序中更改密码。这很好用,我只是没有看到返回的 XML 是真/假。该方法结束于 "-(void)connectionDidFinishLoading:(NSURLConnection *)connection" 并且 XMLParser 永远不会被调用。
下面是我的 connectionDidFinishLoading 的样子。
//--parser to begin parsing our returned xml.
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"Done. Received Bytes: %d", [webData length]);
NSString *theXML = [[NSString alloc]initWithBytes:[webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];
//--show the XML--
NSLog(@"%@",theXML);
if (xmlParser) {
[xmlParser release];
}
xmlParser = [[NSXMLParser alloc] initWithData:webData];
[xmlParser setDelegate:self];
[xmlParser setShouldResolveExternalEntities:YES];
[xmlParser parse];
[connection release];
[webData release];
}
如果我的返回数据为真,通知用户成功或只是更新标签,如果为假,让用户知道等。关于在哪里查看有什么建议吗?
谢谢。
【问题讨论】:
-
顺便说一句,您已经问了 6 个问题,但没有接受其中一个问题的答案。在某些时候,人们会停止回答你的问题。
-
嗯,很明显我忽略了一些事情,因为我回复了所有回答过我的人。
-
@Wevah 是的,我明白了,我已经花时间接受了答案。被忽略了。
-
你不应该在这个方法中释放连接。由于你是作为参数接收的,但你没有保留它,所以根据内存管理规则,你不能释放它。
标签: iphone objective-c cocoa-touch