2012-05-01 222 views
0

我很新入Objective-c编程,而且我对PHP的知识几乎没有。 无论如何,我正在尝试在我的应用程序中执行一个登录屏幕,该屏幕有两个用于输入用户名和密码的文本字段,以及一个假设将用户名/密码输入网站登录页面并连接到该帐户的按钮。 我不知道如果我在正确的道路,但这里是我做的代码示例:我如何使用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 我对不起,但网站是希伯来语,但它不是问题。你能告诉我为什么我不能使用此代码登录吗? (使用真实密码/用户名尝试)

+0

如果你的知识PHP几乎没有什么,你可能想发布登录代码,但我会小心你如何去做这件事。许多安全漏洞马上关闭 – esqew

+1

这行:'[request setValue:@“application/x-www -forma-urlencoded“forHTTPHeaderField:@”Content-Length“];'有一个错误,应该是”Content-Type“而不是”Content-Length“。这可能是问题吗? – kuba

+0

I将其更改为”Content-键入“但仍然,网络视图只是在登录页面加载网站年龄,它不会告诉我,我登录。 – 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:将结果加载到Web视图中。

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做到这一点。 –

相关问题