2010-11-24 18 views
48

पर HTTP शीर्षलेख जोड़ें NSURLRequest ऑब्जेक्ट पर HTTP शीर्षलेख जोड़ने का कोई तरीका है?NSURLRequest

[request addValue:@"PC" forHTTPHeaderField:@"machineName"] 

उत्तर

79

मुझे नहीं लगता कि आप एक NSURLRequest के HTTP हेडर संशोधित कर सकते हैं करते हैं: मैं का उपयोग कर उन्हें NSMutableURLRequest में जोड़ने के लिए इस्तेमाल किया। मुझे लगता है कि आप NSURLRequest ऑब्जेक्ट को संशोधित करने का प्रयास कर रहे हैं जिसे आपने प्रारंभ नहीं किया था?

आप अपने अनुरोध की एक mutableCopy बना सकते हैं और फिर सेट निम्नलिखित विधि के साथ शीर्ष लेख फ़ील्ड:

-(void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field. 

उसके बाद आप परिवर्तनशील अनुरोध वापस अपने NSURLRequest चर पर copy कर सकते हैं।

संपादित: नीचे

/* Create request variable containing our immutable request 
* This could also be a paramter of your method */ 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.stackoverflow.com"]]; 

// Create a mutable copy of the immutable request and add more headers 
NSMutableURLRequest *mutableRequest = [request mutableCopy]; 
[mutableRequest addValue:@"Hless" forHTTPHeaderField:@"X-user-nick"]; 

// Now set our request variable with an (immutable) copy of the altered request 
request = [mutableRequest copy]; 

// Log the output to make sure our new headers are there  
NSLog(@"%@", request.allHTTPHeaderFields); 
+1

प्रतिक्रिया के लिए धन्यवाद, बात यह है कि आप एनटीआरएलआरवेस्ट में एचटीपी हेडर जोड़ नहीं सकते हैं, आप केवल उन्हें प्राप्त कर सकते हैं, ईमानदार होने के लिए मैं NSURLRequest का उपयोग करना चाहता था क्योंकि मैं प्रतिनिधि का उपयोग करके एक खंडित फ़ाइल प्राप्त करना चाहता था "didRece iveData "लेकिन अब मैं NSMutableURLRequest के साथ धागे का उपयोग कर रहा हूं। –

+0

मुझे पता है कि यह कुछ समय हो गया है क्योंकि मैंने इसे पोस्ट किया है, लेकिन कुछ हद तक लोकप्रिय मांग के कारण मैंने शुद्धता के उत्तर को अद्यतन किया और एक उदाहरण जोड़ा। – Hless

+0

हे @ जब तक मैंने इस विधि की कोशिश की लेकिन मुझे अभी भी अनधिकृत हो रहा है। क्या आप यहां मेरा प्रश्न देख सकते हैं: http://stackoverflow.com/questions/40342728/sending-httpheaderfield-for-nsurlrequest-in-afmultipartformdata –

5
NSString *urlString = @"http://10.28.79.63:3000/testing"; 

NSMutableURLRequest *imageRequest = [[NSMutableURLRequest alloc] init] ; 
[imageRequest setURL:[NSURL URLWithString:urlString]]; 
[imageRequest setHTTPMethod:@"POST"]; 

NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 

[imageRequest setValue:contentType forHTTPHeaderField: @"content-Type"]; 
NSMutableData *body = [NSMutableData dataWithCapacity:[imageData length] + 512]; 
[body appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary]dataUsingEncoding:NSUTF8StringEncoding]]; 

//Here u adds the Headers which will be posted in body 

[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; content-type: application/octet-stream; name=\"userfile\"; filename=\"inLove.mp4\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 


[body appendData:[NSData dataWithData:imageData]]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

[imageRequest setHTTPBody:body]; 
NSURLConnection * theConnection = [[NSURLConnection alloc] initWithRequest:imageRequest 
               delegate:self]; 
7

जोड़ा उदाहरण पहले से ही उत्तर दिया (और उन सवालों के जवाब के लिए धन्यवाद), लेकिन यहाँ एक अधिक सरल उदाहरण है:

NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]]; 
[request setValue:@"es" forHTTPHeaderField:@"Accept-Language"]; 
+0

यह वास्तव में सबसे छोटा सही उत्तर है (वाई) – Adeel

संबंधित मुद्दे