nsurlconnection和浏览器访问之间的区别?

时间:2012-10-11 08:52:01

标签: objective-c nsurlconnection nsurl nsurlrequest

我正在开发一个访问书面网址的非常简单的应用程序。所以我想知道nsurlconnection访问和只使用浏览器访问之间有什么区别。导致一些网站响应但他们在使用nsurlconnection时不发送数据。

- (void)getWikiData:(NSString *)keyword{
NSString* tmpURL = @"http://wikipedia.simpleapi.net/api?keyword=";
NSString* encodedString;
CFStringRef strRef = CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)keyword, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]~", kCFStringEncodingUTF8);
encodedString = [NSString stringWithString:(NSString *)strRef];
CFRelease(strRef);
[tmpURL stringByAppendingString:encodedString];
[tmpURL stringByAppendingString:@"&output=html"];
NSURL *url = [NSURL URLWithString:tmpURL];

NSString *userAgent = @"Custom User Agent";
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:url] autorelease];
[request setValue:userAgent forHTTPHeaderField:@"User-Agent"];

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse *)response{
NSLog(@"Receive Response");

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSLog(@"Receive Data");
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

区别在于生成的应用程序的用户代理字符串。 MobileSafari将自己报告为“Safari,iOS就像Mac OS X”,然而,普通的NSURLConnection发送了CFNetwork描述,这对于大多数网站来说都不是很有用“浏览器”(而不是“客户端”) )检测,这就是为什么他们可能拒绝向无法识别的用户代理发送数据。