【问题标题】:Having a problem with a method not being called when NSURLConnection finishesNSURLConnection 完成时没有调用方法的问题
【发布时间】: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


【解决方案1】:

我在 XMLParser 中的类定义中有一个错误,这就是解析器从未被调用的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    相关资源
    最近更新 更多