如何使用XML解析器POST多个请求?

问题描述:

我想在同一个类中使用XML解析器POST 3个请求。我一次只能做一个请求。当我POST多个请求,它说Parser错误。这是我的尝试。如何使用XML解析器POST多个请求?

NSURL *url = [[NSURL alloc] initWithString:getAllFoodsURL]; 
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url]; 

NSString *paramDataString = [NSString stringWithString: 
          @"<GetNames><DeviceId>1234</DeviceId><UserId>200</UserId></GetNames>"]; 

[req addValue:@"application/xml" forHTTPHeaderField:@"content-type"]; 
[req setHTTPMethod:@"POST"]; 
NSData *paramData = [paramDataString dataUsingEncoding:NSUTF8StringEncoding]; 
[req setHTTPBody: paramData]; 

NSURLConnection *theConnection=[[NSURLConnection alloc]initWithRequest:req delegate:self]; 

if (theConnection) { 
    NSMutableData *data = [[NSMutableData alloc] init]; 
    self.receivedData=data; 
    [data release]; 
} 

我已经使用NSXMLParser委托方法。一个请求完成后(连接释放),然后我创建另一个连接并为第二个请求执行相同的过程。 但它不工作。

我想知道,如何使用NSXMLParser管理多个请求?
如果你能给我一个代码的例子,它的高度赞赏。

我猜NSThread是你在找什么。

但我不确定,因为我没有太多的意识到这一点。

请注意,NSXMLParser不参与HTTP请求 - 你的意思是NSURLRequest吗?您需要单独制作您的请求,可能使用单独的块,操作或线程。

一旦您检索到每个请求的数据,就需要为每个请求使用单独的NSXMLParser对象。 NSXMLParser的一个实例在初始化时与其XML数据绑定 - 您不能重用解析器。您可以对所有xml解析器使用相同的委托,并且委托可以使用每个xml解析器委托方法(即parser)的第一个参数来知道哪个解析器正在调用给定的方法。

+0

是的,我已经使用了一个NSXMLParser(但不在代码中)。如果我为每个请求使用单独的解析器对象,可以吗?非常感谢,我会尝试这种方式。 – sajaz

+0

非常感谢您的指导。但是,如何为每个请求使用单独的块/线程?你可以给我一个小代码样本,然后我可以进行进一步的工作 – sajaz