NSMutableURLRequest를 이용한 POST 전송
posted on 11 Jul 2017 under category iOS
NSURLConnection Delegate 는 이 글에서 다루지 않습니다.다른 포스트에서 정리하겠습니다 ;)
애플문서을 보았을때 An object that represents URL load request that bridges to URLRequest 라고 적어져 있다.
구글 번역기를 돌려본 결과 “URLRequest에 중개하는 URL로드 요청을 나타내는 객체” 라고 나온다.
서버와의 통신을 위해 요청할 내용을 모아놓는 객체라고 생각된다.
NSMutableURLRequest *requst = [[NSMutableURLRequest alloc] init];
NSString *param1 = @"AA";
NSString *param2 = @"BB";
//post 데이터 만들기
NSString *post = [NSString stringWithFormat:@"param1=%@¶m2=%@",param1,param2]; //보낼 내용을 작성합니다.
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
//Request 요청 설정하기
[request setURL:[NSURL URLWithString:@"URL입력"]];
[request setHTTPMethod:@"POST"]; // POST 방식으로 보냄
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"Mozilla/4.0 (compatible;)" forHTTPHeaderField:@"User-Agent"];
[request setHTTPBody:postData];
[request setTimeoutInterval:60.0]; // 60초 후 타임아웃
위와 같이 요청을 위한 객체를 만들고 세팅한다. 그 후 request를 webview 나 URLConenction에 사용하면 된다.
//예) webview 에서 사용
[self.webView loadRequest:request];
//예) NSURLConnection 사용
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
if(data == NULL){
NSLog(@"error : %@",[error LocalizedDescription]);
}
else{
// Suceess
NSString *returnStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; //값이 string이라면
}
간단하게 NSURLRequest를 알아보았다. (NSMutableRequest인 이유는 중간에 값이 추가되어서 동적인 값이여서 사용했다.)