2

私はiPhoneインターネットプログラミングの初心者です。ログイン画面のあるアプリを書いています。

私はASIHTTPREQUESTを使用しています。これは、ログインしたいリンクmyurl.com/index.phpです。Chromeでは、ユーザー名とパスワードを使用してシステムにログインすると、開発者コンソールからこのURLがmyurl.com/ajax/login.phpに投稿するのを確認しました。

とにかく、アプリでユーザー名とパスワードを入力した後にログインボタンをクリックすると、システムにログインしません。FAIL :1が出力されます(myurl.com/ajax/login.phpと書くと、FAIL:1が表示されます。ブラウザ。)

私の問題の詳細な説明:

「myurl.com/index.phpにログイン画面があります。Webブラウザで、ユーザー名とパスを書き込むと、myurl.com / ajax / login.phpに投稿されます(開発者コンソールから)。とにかく、 app myurl.com/index.phpをurlとして記述しましたが、リクエストすると、そのページのhtml要素がコンソールに出力されます。myurl.com/ ajax / login.phpをurlとして記述すると、FAIL:1が出力されます。コンソールで。(通常、Webブラウザでmyurl.com/ajax/login.phpと記述しましたが、FAIL:1になります)」

編集:問題を解決しました。「forKey:@」username」は「forKey:@」IDと同じである必要があり、「forKey:@」password」は「forKey:@」PWDと同じである必要があります。開発者コンソールでは、ユーザー名とパスワードがIDとPWDとして返されるためです。コメントと回答をありがとう。

これはコードです:

-(IBAction)login:(id)sender 
{
    NSURL *url = [[NSURL alloc] initWithString:@"https://myurl.com/index.php"];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setTimeOutSeconds:120];
    [request setPostValue:studentid.text forKey:@"username"];
    [request setPostValue:starspassword.text forKey:@"password"];
    [request setDelegate:self];
    [request startAsynchronous];
    [url release];
}

-(void) requestFinished:(ASIHTTPRequest *)request 
{
    NSString *responseString = [request responseString];
    UIAlertView *alert= [[[UIAlertView alloc] initWithTitle:@"Success" message:@"http works" 
                                               delegate:self cancelButtonTitle:@"okay" otherButtonTitles:nil] autorelease];

    [alert show];
    NSLog(@"SUCCESS: %@", responseString);
    //Request succeeded
}

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex         
{
}

-(void) requestFailed:(ASIHTTPRequest *)request 
{
    NSError *error = [request error];
    NSLog(@"ERROR: %@", [error localizedDescription]);

    UIAlertView *alert= [[[UIAlertView alloc] initWithTitle:@"fail" message:@"http fails" delegate:self cancelButtonTitle:@"okay" otherButtonTitles:nil]autorelease];
    [alert show];
    //Request failed
}

私の英語で申し訳ありませんが、このトピックに関するいくつかの例がありますが、私はこの問題を解決しませんでした。アドバイスありがとうございます。

4

1 に答える 1

0

代わりにこれを試しましたか?ASI には基本認証を行う方法が含まれています

[request setUsername:studentid.text];
[request setPassword:starspassword.text];

HTTP 認証の処理まで下にスクロールします

http://allseeing-i.com/ASIHTTPRequest/How-to-use

于 2012-10-01T19:14:30.263 に答える