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
क्या हेडर के शब्दकोश को जोड़ने के लिए कोई एपीआई है?
पॉल ब्रूसीकोन्स्की

1
बहुत बढ़िया जवाब! मैं यह बताना चाहता था कि रामस के उत्तर में अच्छे दस्तावेज हैं।
fskirschbaum

@larry आप इसका जवाब भी दे सकते हैं: stackoverflow.com/questions/40342728/…
चौधरी तल्हा

11

स्विफ्ट के लिए

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

मैं अनुरोध करने के लिए इसी तरह के कोड का उपयोग कर रहा हूं, लेकिन यह शून्य डेटा लौटा रहा है । मैंने कोशिश की कि क्या गलत है और केवल एक चीज जो मैं आ सकता था, प्रतिक्रिया मूल्य वापस आ रहा था "कंटेंट-टाइप" के लिए अलग-अलग मूल्य है जैसा कि मैं कोड की शुरुआत में जोड़ने की कोशिश कर रहा हूं। request.setValue("Some value", forHTTPHeaderField: "Content-Type")क्या यह आपके लिए काम कर रहा है?
साशी

इस शीर्ष लेख का अनुरोध करें ।addValue ("टेक्स्ट / html", forHTTPHeaderField: "सामग्री-प्रकार")
बेसलान तुलाोव

मैंने भी ऐसा ही करने की कोशिश की, लेकिन बात नहीं बनी। अंत में myParameters.dataUsingEncoding का उपयोग करके मेरे लिए काम किया, मैं कुछ और उपयोग कर रहा था यही कारण है कि मुझे लगता है कि यह काम नहीं कर रहा था। सहायता के लिए धन्यवाद।
शशि

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
आपको संभवतः आपके द्वारा पोस्ट किए गए कोड के लिए कुछ स्पष्टीकरण जोड़ना चाहिए।
मास्टर डेम

सेटवैल्यू क्या है: @ "एप्लीकेशन / x-www-form-urlencoded" का अर्थ है, क्या यह sth रिवाज है?
दिलारा अलबायरक

HTTP क्लाइंट सॉफ़्टवेयर में POST के लिए सीमित समर्थन के मामले में जहां शुद्ध डेटा HTTP संदेश बॉडी में प्रस्तुत नहीं किया जा सकता है, RESTfm एप्लिकेशन / x-www-form-urlencoded या मल्टीपार्ट / फॉर्म-डेटा प्रारूपों में एन्कोड किए गए डेटा को संभालने में सक्षम है। । नोट: आवेदन / x-www-form-urlencoded और मल्टीपार्ट / फॉर्म-डेटा प्रारूप केवल HTTP POST विधि के लिए लागू होते हैं नोट 2: यह प्रारूप GET क्वेरी स्ट्रिंग पैरामीटर के लिए आवश्यक के रूप में उसी 'URL एन्कोडिंग' योजना का उपयोग करता है जैसा कि यहां वर्णित है । लाभ बड़े डेटा आकार के लिए समर्थन जो एक GET क्वेरी स्ट्रिंग का उपयोग करके संभव है।
राम एस

अधिक विस्तार के लिए इस लिंक को देखें restfm.com/restfm-manual/web-api-reference-documentation/…
Ram S

2

मैं इसकी देरी जानता हूं लेकिन दूसरों के लिए मदद कर सकता हूं, स्विफ्ट 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;


         }
     }];

}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.