0

我对 Objective-c 编程非常陌生,而且我对 PHP 的了解几乎一无所有。无论如何,我正在尝试在我的应用程序中创建一个登录屏幕,其中有 2 个用于用户名和密码的文本字段,以及一个用于将用户名/密码输入网站登录页面并连接到帐户的按钮。我不确定我是否走对了,但这是我制作的代码示例:

-(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 很抱歉,该网站是希伯来语的,但这不是问题。您能告诉我为什么我无法使用此代码登录吗?(尝试使用真实密码/用户名)

4

2 回答 2

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"]];
于 2012-05-01T17:42:39.437 回答
0

确保“ http://roadster.co.il/forums/ucp.php?mode=login ”是表单发布到的 URL,而不是表单的 URL(您可以在HTML 的表单标签。

于 2013-07-23T12:54:49.237 回答