在iPhone上获取距离矩阵API(谷歌)的XML

时间:2012-03-28 00:04:06

标签: iphone ios xml-parsing gdata

我试图从查询中获取XML数据到api但没有成功...

我这样做:

[...]

 NSURL *googleAPIurl = [NSURL URLWithString:@"http://maps.googleapis.com/maps/api/distancematrix/xml?origins=28.124822,-15.430006&destinations=28.126953,-15.429874|28.072056,-15.416574|28.103186,-15.417665|28.127916,-15.625403|28.099125,-15.418365|28.107740,-15.454050|28.050825,-15.454066|28.051640,-15.454104|28.101788,-15.423592|28.113750,-15.446980|28.098871,-15.420730|28.098217,-15.449371|28.083364,-15.418172&mode=driving&sensor=false"];

    NSData *xmlData = [NSData dataWithContentsOfURL:googleAPIurl];
    NSError *error;
    GDataXMLDocument *xmlDocument = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error];
    if (xmlDocument == nil) 
    {
        NSLog(@"NIL XML");
    }
[...]

我总是得到一个零XML。 NSData始终为零。我不知道这件事发生了什么。如果我使用一个目的地的网址只有它可以工作,但不能超过一个。另外,我使用相同的方法使用google places api检索xml没有任何问题。这让我发疯了......

请指出正确的方向。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我建议将所有'|'替换为'%7C'

原来这是涵盖所有这些字符编码问题的更合适的方法:

NSURL *googleAPIurl = [NSURL URLWithString:[distancesURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];