2011-01-26 232 views
81

我需要为请求设置HTTP标头。在NSURLRequest类的文档中,我没有找到关于HTTP标头的任何信息。我如何设置HTTP头来包含自定义数据?NSURL请求设置HTTP标头

回答

169

您需要使用NSMutableURLRequest

NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] initWithURL:url] 
           autorelease]; 

[request setValue:VALUE forHTTPHeaderField:@"Field You Want To Set"]; 

或添加标题:

[request addValue:VALUE forHTTPHeaderField:@"Field You Want To Set"]; 
+1

正是我在找的!竖起大拇指! – 2012-09-11 16:50:16

+1

有没有用于添加标题字典的API? – 2014-11-04 17:11:19

+1

优秀的答案!我想指出,RamS的[答](http://stackoverflow.com/a/20760445/1778488)有很好的文档。 – fskirschbaum 2014-12-13 19:25:35

6
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:@"your value" forHTTPHeaderField:@"for key"];//change this according to your need. 
[request setHTTPBody:postData]; 
0

可以在NSMutableURLRequest为HeaderField增加价值:

NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url]; 

[request setValue:VALUE forHTTPHeaderField:@"cookie"]; 

这是为我工作。

10

为雨燕

let url: NSURL = NSURL(string: APIBaseURL + "&login=1951&pass=1234")! 
var params = ["login":"1951", "pass":"1234"] 
request = NSMutableURLRequest(URL:url) 
request.HTTPMethod = "POST" 
var err: NSError? 
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err) 
request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
request.addValue("application/json", forHTTPHeaderField: "Accept") 
0

示例代码

- (void)reqUserBalance:(NSString*)reward_scheme_id id:(NSString*)user_id success:(void (^)(id responseObject))success failure:(void (^)(id responseObject))failure{ 

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@reward/%@/user/%@/balance",URL_SERVER,reward_scheme_id,user_id]]; 
    NSLog(@"%@",url); 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 

    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
    [request setValue:@"true" forHTTPHeaderField:@"Bypass"]; 

    [NSURLConnection sendAsynchronousRequest:request 
             queue:[NSOperationQueue mainQueue] 
          completionHandler:^(NSURLResponse *response, 
               NSData *data, NSError *connectionError) 
    { 
         options:kNilOptions error:NULL]; 

     if (data.length > 0 && connectionError == nil) 
     { 
      NSDictionary * userPoints = [NSJSONSerialization JSONObjectWithData:data 
                     options:0 
                     error:NULL]; 

      NSString * points = [[userPoints objectForKey:@"points"] stringValue]; 
      NSLog(@"%@",points); 
      [SecuritySetting sharedInstance].usearAvailablePoints = points; 


     } 
    }]; 

} 
1

我知道它的晚,但可以帮助别人,对于SWIFT 3.0

let url = NSURL(string: "http://www.yourwebsite.com") 
    let mutAbleRequest = NSMutableURLRequest(URL: url!) 
    mutAbleRequest.setValue("YOUR_HEADER_VALUE", forHTTPHeaderField:"YOUR_HEADER_NAME") 
    myWebView.loadRequest(mutAbleRequest)