0

書かれたURLにアクセスする非常に単純なアプリケーションを開発しています。だから私はnsurlconnectionによるアクセスとブラウザを使ったアクセスの違いは何だろうと思っています。一部のサイトが応答しますが、nsurl接続を使用したときにデータを送信しません。

- (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");
}

前もって感謝します。

4

1 に答える 1

0

違いは、結果として得られるアプリケーションのユーザー エージェント文字列にあります。MobileSafari は自身を「Safari、iOS は Mac OS X のように」と報告しますが、平文で説明NSURLConnectionを送信しCFNetworkます。これは、ほとんどのサイトが「ブラウザ」(むしろ「クライアント」) の検出を行うのにあまり役に立たないため、送信を拒否する場合があります。認識されていないユーザー エージェントへのデータ。

于 2012-10-11T09:03:00.913 に答える