2015-01-14 1 views
0

에있는 NSURLConnection을 사용하여 보내기, 일부 웹 페이지는 내가 NSURLCredential 필요하다고 다른 사람 말 :는 POST가 HTTPS를 사용하여 내 서버에 POST를 보내 내가 올바른 구성에 대한 인터넷을 통해 검색 한 HTTPS

단지를 사용 @ "https://www.myhttpsite.com/"URL이며 일반 HTTP URL과 동일한 방식으로 작동해야합니다.

그럼 올바른 방법은 무엇입니까? 내 iOS 앱의 사용자 자격 증명을 내 서버로 보내 인증해야하므로 HTTPS로이 자격 증명을 보호해야합니다.

내 서버는 이미 인터넷 브라우저를 사용하여 HTTPS와 잘 작동합니다. 이 좋은 예가 될 것으로

NSString *user = @"user"; 
NSString *pass = @"pass"; 
NSString *postData = [NSString stringWithFormat:@"user=%@&pass=%@", user, pass]; 
NSURL *url = [NSURL URLWithString:@"https://myserver.com"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
request.HTTPMethod = @"POST"; 
request.HTTPBody = [postData dataUsingEncoding:NSUTF8StringEncoding]; 
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 
    NSString *strData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
    NSLog(@"data %@", strData); 
}]; 
+0

체크 아웃이 SO 후 HTTP : //stackoverflow.com/questions/1571336/sending-post-data-from-iphone-over-ssl-https – Raghav

+0

@ Raghav_1357 내가 이걸 발견 : HTTP : // stackoverflow.com/questions/10063224/ios-https-authentication하지만 완전히 다른 솔루션입니다 ... 하나는 내가 사용해야합니까? –

+0

일부 코드를 사용하여 답변을 게시했습니다. 시도해 보지 않으시겠습니까? – Raghav

답변

1

, 왜 당신이 그것을 시도하지 않습니다

지금까지 내가 무엇을이인가?

NSString *urlstring =[[NSString alloc] initWithFormat:@"userName=%@&password=%@",userName.text,password.text]; 
NSURL *url=[NSURL URLWithString:@"https://www.example.com/mobile/Login.php"]; 

NSData *postData = [urlstring dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 

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

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:url]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:postData]; 


[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]]; 

NSError *error; 
NSURLResponse *resp; 
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&resp error:&error]; 

NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]; 
+0

모든 것이 정상적으로 작동하지만 올바른 https 프로토콜을 사용하고 있는지 어떻게 확인할 수 있습니까? –

+0

이 주제에 대한 지식으로는 문제가있을 거라고 생각합니다. 데이터가 안전하다고 생각합니다. – Raghav

+0

@FernandoSantiago 이것은 좋은 예가 아닙니다. 실제로 문제를 올바르게 해결하지 못하고 잘못된 문자 인코딩 변환 및 존재하지 않는 양식의 게시물 데이터 인코딩 등 여러 가지 문제가 있습니다. 이를 올바르게 해결하려면 위임 방식을 사용하고 필요한 인증 방법 (필요한 경우)에 따라 사용자 자격 증명을 제공하는 해당 대리인을 구현하고 신뢰 된 평가를 수행하여 원하는 서버에 연결되어 있는지 확인해야합니다. – CouchDeveloper