我使用NSString
方法initWithContentsOfURL:usedEncoding:error:
来获取某些页面的内容。我注意到,当我尝试访问的页面不存在时,此方法会执行很长时间,然后因超时错误而失败。我尝试出于相同的目的使用NSURLRequest
和NSURLConnection
类,但得到相同的结果 - 执行时间长然后超时错误。当我尝试在浏览器中打开同一页面时,我会更快地得到响应并返回页面不可用错误。
看起来可可方法不对页面名称进行 dns 解析,或者它们对该操作有更长的超时时间。
所以我的问题是,我使用的可可方法可以解析 dns 吗?如果他们不这样做怎么办?
我使用的代码示例:
NSURL* url = [NSURL URLWithString:@"http://unexisting.domain.local"];
NSError* err = nil;
NSString* content = [NSString stringWithContentsOfURL:url usedEncoding:nil error:&err];
if (err) {
NSLog(@"error: %@", err);
} else {
NSLog(@"content: %@", content);
}
NSURL* url = [NSURL URLWithString:@"http://unexisting.domain.local"];
NSURLRequest* request = [NSURLRequest requestWithURL:url];
NSURLResponse* response = nil;
NSError* err = nil;
NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
if (err) {
NSLog(@"error: %@", err);
} else {
NSString* content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"content: %@", content);
}
谢谢!