HTTP 헤더 설정 NSURLRequest


86

요청에 대한 HTTP 헤더를 설정해야합니다. NSURLRequest 클래스에 대한 문서에서 HTTP 헤더에 관한 내용을 찾지 못했습니다. 사용자 지정 데이터를 포함하도록 HTTP 헤더를 설정하려면 어떻게해야합니까?

답변:


182

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
내가 찾던 것 !! 당신에게 엄지 손가락 !!
Apple_iOS0304

1
헤더 사전을 추가하는 API가 있습니까?
Paul Brewczynski 2014

1
훌륭한 대답입니다! RamS의 답변 에 멋진 문서가 있음을 지적하고 싶었습니다 .
fskirschbaum

@larry 당신도 이것에 대답 할 수 있습니까 : stackoverflow.com/questions/40342728/…
Chaudhry Talha

11

Swift 용

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")

내가 요청을하는 코드의 유사한 종류를 사용하고 있지만, 반환 있어요 전무 데이터를. 나는 무엇이 잘못되었는지 시도했고 내가 올 수 있었던 유일한 것은 내가 코드 시작 부분에 추가하려는 것과는 반대로 "Content-Type"에 대한 응답 값이 다른 값을 갖는다는 것입니다. request.setValue("Some value", forHTTPHeaderField: "Content-Type")이것이 당신을 위해 일하고 있습니까?
Sashi

이 헤더를 사용해보십시오 request.addValue ( "text / html", forHTTPHeaderField : "Content-Type")
Beslan Tularov 2015

나도 시도했지만 작동하지 않았습니다. 마지막으로 myParameters.dataUsingEncoding을 사용하면 효과가 있었으며 다른 것을 사용하고 있었기 때문에 작동하지 않는다고 생각했습니다. 도와 주셔서 감사합니다.
Sashi

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

2
게시 한 코드에 대한 설명을 추가해야합니다.
MasterAM

setValue : @ "application / x-www-form-urlencoded"는 무엇을 의미합니까?
Dilara Albayrak

HTTP 메시지 본문에 순수 데이터를 제출할 수없는 HTTP 클라이언트 소프트웨어에서 POST에 대한 제한된 지원의 경우 RESTfm은 application / x-www-form-urlencoded 또는 multipart / form-data 형식으로 인코딩 된 데이터를 처리 할 수 ​​있습니다. . 참고 : application / x-www-form-urlencoded 및 multipart / form-data 형식은 HTTP POST 메서드에만 적용됩니다. 참고 2 :이 형식은 여기에 설명 된대로 GET 쿼리 문자열 매개 변수에 필요한 것과 동일한 'URL 인코딩'체계를 사용합니다. . 장점 GET 쿼리 문자열을 사용하여 가능한 것보다 더 큰 데이터 크기를 지원합니다.
Ram S

자세한 내용은이 링크를 참조하십시오 restfm.com/restfm-manual/web-api-reference-documentation/…
Ram S

2

나는 늦게 알고 있지만 다른 사람들을 도울 수 있습니다 .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)

0

NSMutableURLRequestHeaderField 값을 추가 할 수 있습니다 .

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

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

이것은 나를 위해 일하고 있습니다.


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;


         }
     }];

}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.