4

通常、http ユーザーエージェントは次のようになります。

Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341

もし私が

NSMutableURLRequest *newUserAgentRequest = (NSMutableURLRequest*)[NSURLRequest requestWithURL:self.url];
    NSString *userAgent = [newUserAgentRequest valueForHTTPHeaderField:@"User-Agent"];

userAgent が nil または空であることを意味します

NSMutableURLRequest *newUserAgentRequest = (NSMutableURLRequest*)[NSURLRequest requestWithURL:self.url];

ユーザーエージェントが含まれていません。ユーザーエージェントでリクエストを開始する方法は?

4

4 に答える 4

7

私は次のようにしただけです。これは iOS デバイス用です。

NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] 
                                       initWithURL:[NSURL URLWithString:[yourURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
NSString *userAgent = [NSString stringWithFormat:@"%@ %@",[UIDevice currentDevice].systemName,[UIDevice currentDevice].systemVersion];
[urlRequest setValue:userAgent forHTTPHeaderField:@"User-Agent"];

それが役に立てば幸い

于 2012-06-28T07:49:15.720 に答える
1

NSMutableURLRequest をサブクラス化し、サブクラスのコンストラクターで「User-Agent」HTTPHeaderField を設定するだけです。これにより、インスタンスを作成するたびにヘッダーを設定することを常に覚えておくという問題が軽減されます。

于 2012-12-28T15:21:20.363 に答える
1

(アンダースコア付きの) フィールドの設定は、User_Agent一部の Web サイトでは機能しますが、すべての Web サイトでは機能せず、通常は NSURL... クラスによってオーバーライドされません。辞書をいじる以外のもう1つの選択肢(許可されていないと思いますが、とにかく例を投稿します)は、メソッドの入れ替えです。

+ (void)initialize {
    // Set user agent (the only problem is that we can't modify the User-Agent later in the program)
    NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341", @"UserAgent", nil];
    [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
    //only under MRC do we release [dictionnary release];
}
于 2012-06-28T07:40:39.407 に答える
1

これは私にとってはうまくいきます:

NSString *userAgent = @"My user agent";
NSURL *url = [NSURL URLWithString:@"http://127.0.0.1:9000"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setValue:userAgent forHTTPHeaderField:@"User-Agent"];

User-Agent は、自分で指定しない場合は後で設定されるため、nil読み込もうとしたときに設定されます。

于 2012-06-28T07:52:31.357 に答える