2012-05-01 2 views
0

나는 Objective-c 프로그래밍에 대해 거의 새롭기 때문에 PHP 지식은 거의 없다. 어쨌든, 사용자 이름과 암호를위한 2 개의 텍스트 필드와 웹 사이트 로그인 페이지에 사용자 이름/암호를 입력하고 계정에 연결하는 버튼이있는 응용 프로그램에서 로그인 화면을 만들려고합니다. 내가 올바른 방법에있어 잘 모르겠어요하지만 여기에 내가 만든 코드의 샘플입니다 : 당신은 내가에 로그인하기 위해 노력하고있어 웹 사이트를 볼 수있는Xcode에서 사용자 이름/암호를 사용하여 웹 사이트에 로그인하는 방법은 무엇입니까?

-(IBAction)ButtonClicked:(id)sender 
{ 
    NSString *content = @"username=blabla&password=123456"; 
    NSData *data=[content dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
    NSString *postlenght=[NSString stringWithFormat:@"%d",[data length]]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://roadster.co.il/forums/ucp.php?mode=login"]]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:postlenght forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Length"]; 
    [request setHTTPBody:data]; 
    NSError *error=nil; 
    NSURLResponse *response=nil; 
    NSData *result=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

    [webview loadRequest:request]; 
} 

http://roadster.co.il/forums/ucp.php?mode=login I입니다 미안하지만 웹 사이트는 히브리어로되어 있지만 문제는 아닙니다. 이 코드를 사용하여 로그인 할 수없는 이유를 말씀해 주시겠습니까? (실제 암호/사용자 이름으로 시도)

+0

하면 지식 PHP는 거의 아무것도 아니지만 로그인 코드를 게시하고 싶을 수도 있습니다.하지만이 방법에 대해주의해야합니다. 많은 보안 취약점이 있습니다. – esqew

+1

다음 줄 :'[setValue : @ "application/x-www -form-urlencoded "forHTTPHeaderField :" "Content-Length"]; '실수로, "Content-Length"대신 "Content-Type"이 있어야합니다 문제가 될 수 있습니까? – kuba

+0

"Content- 유형 "이지만 여전히 웹보기는 로그인 p에서 웹 사이트를로드합니다. 나이, 그것은 내가 로그인 한 표시되지 않습니다. – Adi

답변

1

요청을 두 번 시도하고 있습니다.

NSError *error=nil; 
NSURLResponse *response=nil; 
NSData *result=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

[webview loadRequest:request]; 

모두 +sendSynchronousRequest:returningResponse:error:-loadRequest:는 서버에 요청을 보냅니다. 당신은 단지 하나 또는 다른 것을하고 싶습니다. 첫 번째 세 줄의 코드를 제거하거나 -loadHTMLString:baseURL:을 사용하여 결과를 웹보기에로드하십시오.

NSString *HTMLString = [[[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding] autorelease]; 
[webview loadHTMLString:HTMLString baseURL:[NSURL URLWithString:@"http://roadster.co.il/forums/ucp.php?mode=login"]]; 
+0

나는 당신의 제안을 loadHTMLString과 함께 시도해 보았습니다. 그것은 솔루션에 가깝게 느껴졌지만 여전히 작동하지 않았습니다. 여전히 페이지에 빈 로그인을로드합니다. 그것은 내 정보를 php에 보냈다 - "username = blabla & password = 123456",하지만 로그인을 시도하는 데 아무 것도하지 않았다. 로그인 버튼 기능을 호출하는 방법이 있나요? 내 생각에 그게 내가 빠졌던 것 같아. (당신이 다른 사람이라고 생각하면 정정해라.) – Adi

+0

@Adi : 그것이 동기식으로 보내거나, 비동기 적으로 보내거나, WebView로 보내서 요청을 보내는 것이다. –

관련 문제