NSString
メソッドを使用initWithContentsOfURL:usedEncoding:error:
して、あるページのコンテンツを取得します。アクセスしようとしているページが存在しない場合、このメソッドは長時間実行され、タイムアウトエラーで失敗することに気付きました。NSURLRequest
同じ目的でクラスを使用しようとしましNSURLConnection
たが、同じ結果が得られました。長時間実行すると、タイムアウトエラーが発生します。同じページをブラウザで開こうとすると、応答が速くなり、ページが利用できないというエラーが返されます。
cocoaメソッドはページ名の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);
}
ありがとう!