繁体   English   中英

如何检测HTTP响应,解析xml并保存到NSString?

[英]How do I detect a HTTP response, parse the xml and save to a NSString?

我已经尝试了好几个星期了,但仍然一无所获。 我正在使用ASIHTTPRequest,并且已成功将数据发送到服务器,现在我需要获取响应XML,对其进行解析并将元素保存到每个标记的NSString中,以便将其发布到服务器。 有谁知道如何做到这一点?

通过查看“ 使用方法”页面,我认为您想要做的是实现可以在请求完成后调用的方法。 例如,假设您已done:一个方法done:要在请求完成时调用它。 您可以将该方法设置为请求的“完成”选择器:

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
[request setDelegate:self];
[request setDidFinishSelector:@selector(done:)];

然后,您实现done:方法:

- (void)done:(ASIHTTPRequest *)request
{
   NSString *response = [request responseString];
}

所有这些都假设您正在异步发送请求。 如果使用同步调用,则可以仅在请求上使用responseString属性。

如果您有其他琐碎的XML解析需求,请获取iPhone的XML库的副本。
之前,我曾使用Google的GDataXMLNode,但是我可能会在以后的工作中使用KissXML,因为它离NSXML越来越近(不幸的是,Apple图书馆并未为iphone推出)。

这是解析响应的一种方法,在这里我正在寻找您通常会从Rails服务器看到的错误,大致如下:

  <errors><error>Description of what went wrong</error></errors>

您可以看到我从库中获取了“请求”对象,并将响应字符串输入到GDataXMLDocument中。

   GDataXMLDocument* root = [[GDataXMLDocument alloc] initWithXMLString:[request responseString] options:0 error:nil];

   // Parse the error strings
   NSArray* errors = [root nodesForXPath:@"//errors/error" error:nil];

   // What is the first error string.... etc......
   NSString* firstError = [[errors objectAtIndex:0] stringValue];

这里返回的数组包含与XML中的该路径匹配的节点列表。 如果您不熟悉XPath,它就不难学习,并且对于从XML响应中提取数据很有用。 对数组中返回的元素调用stringValue将返回上例中元素之间的文本。

您当然可以使用返回的XML数据填充字典等。 说得通?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM