0

私はObjective-cプログラミングにかなり慣れていないので、PHPに関する知識はほとんどありません。とにかく、ユーザー名とパスワードの2つのテキストフィールドと、ユーザー名/パスワードをWebサイトのサインインページに入力してアカウントに接続するためのボタンがあるアプリでログイン画面を実行しようとしています。正しい方向に進んでいるかどうかはわかりませんが、作成したコードのサンプルを次に示します。

-(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];
}

ご覧のとおり、ログインしようとしているWebサイトは http://roadster.co.il/forums/ucp.php?mode=login です。申し訳ありませんが、Webサイトはヘブライ語ですが、問題ではありません。このコードを使用してサインインできない理由を教えてください。(実際のパスワード/ユーザー名で試してみました)

4

2 に答える 2

1

リクエストを 2 回行おうとしています。

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

[webview loadRequest:request];

両方とも、リクエストをサーバーに送信します+sendSynchronousRequest:returningResponse:error:-loadRequest:あなたはどちらかをしたいだけです。コードの最初の 3 行を削除するか、 を使用-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 ではなく、フォームの POST 先の URL であることを確認してください (これは、 HTMLのフォームタグ。

于 2013-07-23T12:54:49.237 に答える