2016-07-31 2 views
0

iOS 앱에서 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 헤더 필드에서 아무것도를 설정하는 필수인가?

예인 경우 어떤 헤더 필드가 필요합니까?

감사합니다.

답변

0

어떤 헤더 필드가 필요한지는 요청을 보내는 서버가 결정합니다. NSURLSession과 친구들이 원하는 헤더를 기쁜 마음으로 제출하거나 전혀 헤더를 제출하지 않습니다.

NSMutableURLRequest 클래스 참조에서
-1

: 업로드 본문 데이터의 길이가 자동으로 결정 할 수있는 경우

(예를 들어, 당신은있는 NSData 객체와 본문 내용을 제공하는 경우) 콘텐츠 길이의, 그 값을 당신을 위해 설정됩니다.

간단한 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 
+0

감사합니다! 따라서 콘텐츠 유형도 필요하지 않습니다. 기본 콘텐츠 유형은 무엇입니까? –

+0

@ BalázsVincze 기본 콘텐츠 형식이없는 것 같습니다. 그러나 postData가 설정된 경우 사용할 수있는 두 가지 유형이 있습니다. http://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data – forkaj