【问题标题】:Changing the userAgent of NSURLConnection更改 NSURLConnection 的 userAgent
【发布时间】:2009-10-07 15:03:33
【问题描述】:

嘿,我正在使用 NSURL 连接来接收数据。

[NSURLConnection sendSynchronousRequest:
//create request from url
[NSURLRequest requestWithURL:
  //create url from string
  [NSURL URLWithString:url]
] 
//request parameters
returningResponse:nil error:nil
] 

是否可以更改用户代理字符串? 现在是:

AppName/AppVersion CFNetwork/459 Darwin/10.0.0.d3

【问题讨论】:

    标签: iphone cocoa cocoa-touch nsurlconnection


    【解决方案1】:

    对象-C:

    NSString* userAgent = @"My Cool User Agent";
    NSURL* url = [NSURL URLWithString:@"http://whatsmyuseragent.com/"];
    NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] initWithURL:url]
                                    autorelease];
    [request setValue:userAgent forHTTPHeaderField:@"User-Agent"];
    
    NSURLResponse* response = nil;
    NSError* error = nil;
    NSData* data = [NSURLConnection sendSynchronousRequest:request
                                         returningResponse:&response
                                                     error:&error];
    

    斯威夫特:

    let userAgent = "My Cool User Agent"
    if let url = NSURL(string: "http://whatsmyuseragent.com/") {
       let request = NSMutableURLRequest(URL: url)
       request.setValue(userAgent, forHTTPHeaderField: "User-Agent")
       var response:NSURLResponse? = nil;
       var error:NSError? = nil;
       if let data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) {
          // do something with your data
       }
     }
    

    【讨论】:

    • 你应该使用setValue:forHTTPHeaderField:,如果你想改变userAgent,而不是仅仅将更多信息附加到默认的。
    【解决方案2】:

    是的,您需要使用 NSMutableURLRequest 并为您的用户代理字符串设置自定义标头字段。

    【讨论】:

    • 使用 'swift' 语言不需要使用 NSMutableURLRequest,因为它被覆盖为单一类型的 URLRequest
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    相关资源
    最近更新 更多