我从我的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标头字段中设置任何内容?
如果是,需要哪些标题字段?
谢谢!
答案 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