将HTTP头添加到NSURLRequest

有什么办法可以添加HTTP头到NSURLRequest对象? 我用它们在NSMutableURLRequest添加它们使用:

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

我不认为你可以修改NSURLRequest的HTTP头。 我想你试图修改一个你没有初始化的NSURLRequest对象?

您可以创build请求的mutableCopy ,然后使用以下方法设置标题字段:

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

之后,您可以copy可变请求copy回您的NSURLRequestvariables。

编辑 :添加下面的例子

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

已经回答(并感谢这些答案),但这里有一个更简单的例子:

 NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]]; [request setValue:@"es" forHTTPHeaderField:@"Accept-Language"]; 
 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];