无法从具有多个标题的MediaWiki API URL打开NSURL

时间:2014-06-14 20:41:04

标签: php ios json nsurl mediawiki-api

我在iPhone应用中使用MediaWiki API

我正在尝试加载此链接(维基百科文章中所有图像的JSON格式为" Spider"以及" Cat"):

http://en.wikipedia.org/w/api.php?action=query&prop=images&format=json&imlimit=200&titles=Spider|Cat

我的代码是:

NSString *urlPath = @"http://en.wikipedia.org/w/api.php?action=query&prop=images&format=json&imlimit=200&titles=Spider|Cat";
NSURL *URL = [NSURL URLWithString:urlPath];    // nil

我可以在我的计算机上轻松访问该链接,但它拒绝加载此代码。但是,它确实可以使用其他链接,例如这个链接(仅适用于#34; Spider")

http://en.wikipedia.org/w/api.php?action=query&prop=images&format=json&imlimit=200&titles=Spider

NSString *urlPath = @"http://en.wikipedia.org/w/api.php?action=query&prop=images&format=json&imlimit=200&titles=Spider";
NSURL *URL = [NSURL URLWithString:urlPath];    // works just fine

这是|NSString字符的问题吗?我不明白为什么这对第二个链接起作用,而不是第一个链接。

1 个答案:

答案 0 :(得分:0)

我意识到问题出在垂直管道符号|被添加到NSURL中,这对我没有意义,但解决方法是用%7C替换它,我从this answer

学到的“字符的URL编码值”

所以,这有效:

NSString *urlPath = @"http://en.wikipedia.org/w/api.php?action=query&prop=images&format=json&imlimit=200&titles=Spider%7CCat";
NSURL *URL = [NSURL URLWithString:urlPath];    // nil