2009-10-07 3 views
51

Эй Я использую соединение NSURL для приема данных.Изменение userAgent из NSURLConnection

[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

ответ

98

Obj-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]; 

Swift:

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 
    } 
} 
+3

вы должны использовать 'SetValue: forHTTPHeaderField:', если вы хотите изменить UserAgent вместо того, чтобы просто добавив больше информации по умолчанию один. – Daniel

6

Да, вы должны использовать NSMutableURLRequest и установить поле пользовательского заголовка для строки агента пользователя.

Смежные вопросы