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 2012

1
ヘッダーの辞書を追加するためのAPIはありますか?
Paul Brewczynski 2014年

1
素晴らしい答えです!RamSの答えには素晴らしいドキュメントがあることを指摘したいと思います。
fskirschbaum 2014

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

同様の種類のコードを使用してリクエストを行っていますが、nilデータが返されます。何が問題なのか試してみましたが、コードの最初に追加しようとしているものとは対照的に、返される応答値の「Content-Type」の値が異なるだけでした。request.setValue("Some value", forHTTPHeaderField: "Content-Type")これはあなたのために働いていますか?
sashi 2015

このヘッダーを試してくださいrequest.addValue( "text / html"、forHTTPHeaderField: "Content-Type")
Beslan Tularov 2015

私もそれを試しましたが、うまくいきませんでした。最後にmyParameters.dataUsingEncodingを使用するとうまくいきましたが、他の何かを使用していたので、うまくいかなかったと思います。助けてくれてありがとう。
sashi 2015

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 2013

setValue:@ "application / x-www-form-urlencoded"はどういう意味ですか、それはsthカスタムですか?
Dilara Albayrak 2016年

純粋なデータを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クエリ文字列を使用して可能なものよりも大きなデータサイズをサポートします。
ラムS

詳細については、このリンクを参照してください restfm.com/restfm-manual/web-api-reference-documentation/…–
Ram S

2

私はその遅いことを知っていますが、他の人を助けるかもしれません、SWIFT3.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.