一个“|” URL 中的字符中断了 URL 的加载内容
A single "|" character in the URL breaks loading contents of URL
我正在尝试从维基百科 API 加载 JSON 格式的文章,但出现以下错误:
nil host used in call to allowsSpecificHTTPSCertificateForHost
nil host used in call to allowsAnyHTTPSCertificateForHost:
NSURLConnection finished with error - code -1002
error when trying to fetch from URL (null) - The file couldn’t be opened.
仅当 URL 字符串包含字符“|”时才会出现这些错误
id=1 (pageids=1) 的文章的 URL 是:
https://en.wikipedia.org/w/api.php?action=query&format=json&pageids=1&prop=extracts&exintro&explaintext
上面的 URL 不包含字符“I”,所以它工作正常。
在维基百科 API 中,您可以通过用“|”分隔它们的 ID 来请求多篇文章字符
ids=1,2 和 3 (pageids=1|2|3) 的文章的 URL 是:
https://en.wikipedia.org/w/api.php?action=query&format=json&pageids=1|2|3&prop=extracts&exintro&explaintext
上面的URL包含"|"性格,一切都失败了。
我使用在另一个 post 中找到的这个片段来捕捉错误:
NSError *error = NULL;
NSStringEncoding actualEncoding;
NSString *string = [[NSString alloc] initWithContentsOfURL:url usedEncoding:&actualEncoding error:&error];
if(string)
{
NSLog( @"hey, I actually got a result of %@", string);
if(actualEncoding != NSUTF8StringEncoding)
{
NSLog( @"and look at that, the actual encoding wasn't NSUTF8StringEncoding");
}
} else {
NSLog( @"error when trying to fetch from URL %@ - %@", [url absoluteString], [error localizedDescription]);
}
如果您查看代码,url.absoluteString returns 当有“|”时为 null其中的字符。
竖线(|
)是一个特殊字符。您必须通过添加适当的百分比编码来对 URL 进行编码。
这与字符串的文本编码无关。
NSString * string = @"https://en.wikipedia.org/w/api.php?action=query&format=json&pageids=1|2|3&prop=extracts&exintro&explaintext";
NSURL *url = [NSURL URLWithString:[string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];
我正在尝试从维基百科 API 加载 JSON 格式的文章,但出现以下错误:
nil host used in call to allowsSpecificHTTPSCertificateForHost
nil host used in call to allowsAnyHTTPSCertificateForHost:
NSURLConnection finished with error - code -1002
error when trying to fetch from URL (null) - The file couldn’t be opened.
仅当 URL 字符串包含字符“|”时才会出现这些错误
id=1 (pageids=1) 的文章的 URL 是:
https://en.wikipedia.org/w/api.php?action=query&format=json&pageids=1&prop=extracts&exintro&explaintext
上面的 URL 不包含字符“I”,所以它工作正常。
在维基百科 API 中,您可以通过用“|”分隔它们的 ID 来请求多篇文章字符
ids=1,2 和 3 (pageids=1|2|3) 的文章的 URL 是:
https://en.wikipedia.org/w/api.php?action=query&format=json&pageids=1|2|3&prop=extracts&exintro&explaintext
上面的URL包含"|"性格,一切都失败了。
我使用在另一个 post 中找到的这个片段来捕捉错误:
NSError *error = NULL;
NSStringEncoding actualEncoding;
NSString *string = [[NSString alloc] initWithContentsOfURL:url usedEncoding:&actualEncoding error:&error];
if(string)
{
NSLog( @"hey, I actually got a result of %@", string);
if(actualEncoding != NSUTF8StringEncoding)
{
NSLog( @"and look at that, the actual encoding wasn't NSUTF8StringEncoding");
}
} else {
NSLog( @"error when trying to fetch from URL %@ - %@", [url absoluteString], [error localizedDescription]);
}
如果您查看代码,url.absoluteString returns 当有“|”时为 null其中的字符。
竖线(|
)是一个特殊字符。您必须通过添加适当的百分比编码来对 URL 进行编码。
这与字符串的文本编码无关。
NSString * string = @"https://en.wikipedia.org/w/api.php?action=query&format=json&pageids=1|2|3&prop=extracts&exintro&explaintext";
NSURL *url = [NSURL URLWithString:[string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];