我在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
字符的问题吗?我不明白为什么这对第二个链接起作用,而不是第一个链接。
答案 0 :(得分:0)
我意识到问题出在垂直管道符号|
被添加到NSURL
中,这对我没有意义,但解决方法是用%7C
替换它,我从this answer
所以,这有效:
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