2009-10-07 33 views
51

Hey Tôi đang sử dụng Kết nối NSURL để nhận dữ liệu.Thay đổi userAgent của NSURLConnection

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

Có thể thay đổi chuỗi tác nhân người dùng không? ngay bây giờ nó là:

AppName/AppVersion CFNetwork/459 Darwin/10.0.0.d3

Trả lời

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

bạn nên sử dụng 'setValue: forHTTPHeaderField:', nếu bạn muốn thay đổi UserAgent thay vì chỉ phụ thêm thông tin để mặc định một. – Daniel

6

Có, bạn cần phải sử dụng một NSMutableURLRequest và thiết lập một lĩnh vực tiêu đề tùy chỉnh cho chuỗi tác nhân người dùng của bạn.