我一直在试图算出这个数周,我仍然什么也得不到。我现在用的是ASIHTTPRequest和香港专业教育学院的数据成功发送到服务器,现在我需要获得响应XML,分析它,并保存元件相互标记的NSString这样我就可以将其发布到服务器。有没有人对如何做到这一点的想法?

有帮助吗?

解决方案

从看如何使用页面,我想你想要做的是落实请求完成时,可调用的方法。例如,假设你有你希望你的请求完成时调用的方法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解析需求等。结果 我使用谷歌的GDataXMLNode此之前,但我可能会使用KissXML为今后的工作,因为它更接近NSXML(苹果库不出货的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归因
不隶属于 StackOverflow
scroll top