2009-10-07 16 views
51

Oye, estoy usando una conexión NSURL para recibir datos.Cambiar el userAgent de NSURLConnection

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

¿Es posible cambiar la cadena de agente de usuario? en este momento es:

NombreApl/AppVersion CFNetwork/459 Darwin/10.0.0.d3

Respuesta

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

usted debe utilizar 'setValue: forHTTPHeaderField:', si desea cambiar el userAgent en lugar de simplemente añadiendo más información a los valores predeterminados uno. – Daniel

6

Sí, es necesario utilizar un NSMutableURLRequest y establecer un campo de encabezado personalizado para su cadena de agente de usuario.