iOS上的POST请求必需的标头

时间:2016-07-31 14:12:30

标签: php ios objective-c post

我从我的iOS应用程序发送POST方法。我的代码工作正常,但我只是复制粘贴它。

NSString *post = @"key1=val1&key2=val2";
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"http://www.nowhere.com/sendFormHere.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

我的问题是:是否必须在HTTP标头字段中设置任何内容?

如果是,需要哪些标题字段?

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要哪些标头字段将由您发送请求的服务器确定。 NSURLSession和朋友们会愉快地提交您想要的任何标题,或者根本没有标题。

答案 1 :(得分:-1)

  

来自NSMutableURLRequest类参考:

     

如果可以自动确定上传正文数据的长度(例如,如果您为正文内容提供NSData对象),则会为您设置Content-Length的值。

一个简单的POST请求可能如下所示:

NSURL *url = [NSURL URLWithString:@"http://www.nowhere.com/sendFormHere.php"];
NSData *postData = [@"key1=val1&key2=val2" dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"]; //The default HTTP method is “GET”.
[request setHTTPBody:postData]; //query string is sent in the HTTPBody of a POST request