0

このコードを Objective C に実装しようとしています:

Public Shared Function Login(ByVal Username As String, ByVal Password As String) As Boolean
    Dim str As String = Func.ConvertToHex(Username)
    Http.GetResponse("http://www.website.com/forum/login.php?do=login", String.Concat(New String() { "vb_login_username=", str, "&vb_login_password=", Password, "&cookieuser=1&s=&securitytoken=guest&do=login&vb_login_md5password=&vb_login_md5password_utf=" }))
    If Http.ResponseValue.Contains(("Thank you for logging in, " & Username)) Then
        Http.GetResponse("http://www.website.com/forum/usercp.php")
        Return True
    End If
    Return False
End Function

これは私がすでに行ったことです:

- (IBAction)loginButton:(id)sender {
    NSURL *loginURL = [NSURL URLWithString:@"http://www.website.com/forum/login.php?do=login"];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:loginURL];
    [request setRequestMethod:@"POST"];
    [request setUseKeychainPersistence:YES];

    [request addPostValue:[self.usernameField stringValue] forKey:@"vb_login_username="];
    [request addPostValue:[self.passwordField stringValue] forKey:@"&vb_login_password="];

    [request setDelegate:self];
    [request setTimeOutSeconds:60];
    [request startSynchronous];
    [request setUseSessionPersistence:YES];
}

- (void)requestFailed:(ASIHTTPRequest *)request {
    NSLog(@"Request failed: %@",[request error]);
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
    NSLog(@"Submitted form successfully");
    NSLog(@"Response was:");
    NSLog(@"%@",[request responseString]);
}

しかし、それは機能しません.. 返信が返ってきましたが、メンバーとしてではありません.

PS vBulletin フォーラムについてです。下手な英語で申し訳ありません..

前もって感謝します!

4

2 に答える 2

0

テストするサーバーがないため、再現を試みるのは困難です。ただし、次の 2 つの点があります。

  1. 使用しているライブラリは減価償却されています。他のライブラリ (AFNetworking など) に移動することを検討してください。

  2. 2 番目のパラメーターには「&vb_login_password=" があります。「&」文字は使用しないでください。また、末尾の「=」を削除してみてください。

HTTPS がない場合は、wireshark を使用して、動作するプログラムとバージョンからのパケットを確認できます。次に、リクエストとシークの両方を比較して違いを探します。

于 2013-10-27T19:04:58.017 に答える
0

それは今動作します。いくつかのエントリを追加しました。

[request addPostValue:@"1" forKey:@"cookieuser"];
[request addPostValue:@"login" forKey:@"do"];
[request addPostValue:@"" forKey:@"s"];
[request addPostValue:@"guest" forKey:@"securitytoken"];
[request addPostValue:@"" forKey:@"vb_login_md5password"];
[request addPostValue:@"" forKey:@"vb_login_md5password_utf"];
[request addPostValue:[self.passwordField stringValue] forKey:@"vb_login_password"];
[request addPostValue:[self.usernameField stringValue] forKey:@"vb_login_username"];

フォーラムから HTML コードを取得し、「ログインしていただきありがとうございます、ユーザー名」と表示されるところまで戻りました。

于 2013-10-28T12:43:29.917 に答える