2010-11-24 13 views

Antwort

79

Das glaube ich Ihnen nicht um die HTTP-Header eines NSURLRequest ändern können. Ich denke, Sie versuchen, ein NSURLRequest Objekt zu ändern, das Sie nicht initialisiert haben?

Sie könnten ein mutableCopy Ihre Anfrage erstellen und dann die Header-Felder mit der folgenden Methode:

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

Danach können Sie die wandelbar Anfrage zurück auf Ihre NSURLRequest Variable copy können.

EDIT: Hinzugefügt Beispiel unten

/* 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

Vielen Dank für die Antwort, die Das Problem ist, dass Sie keine Http Header zum NSURLRequest hinzufügen können. Sie können sie nur erhalten. Um ehrlich zu sein, wollte ich NSURLRequest verwenden, weil ich eine Chunked Datei mit dem Delegaten "didRece erhalten wollte iveData "aber jetzt benutze ich stattdessen Threads mit NSMutableURLRequest. –

+0

Ich weiß, dass es eine Weile her ist, seit ich das gepostet habe, aber aufgrund der etwas populären Nachfrage habe ich die Antwort auf Korrektheit aktualisiert und ein Beispiel hinzugefügt. – Hless

+0

hey @Hless Ich habe diese Methode versucht, aber ich werde immer noch nicht autorisiert. Können Sie meine Frage hier sehen: http://stackoverflow.com/questions/40342728/sending-httpheaderfield-for-nsurlrequest-in-afmultiformatdata –

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

bereits beantwortet (und dank dieser Antworten), aber hier ist ein einfacheres Beispiel:

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

Dies ist in der Tat die kürzeste richtige Antwort (Y) – Adeel

Verwandte Themen