2013-10-27 2 views
0

목적 C :의 HTTPRequest를 - 내가 목표 C에서이 코드를 구현하기 위해 노력하고

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

을하지만이 작동하지 않습니다

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 

이 이미 한 일이다. 회신은 받았지만 회신은받지 못했습니다.

P. 그것은 vBulletin 포럼에 관한거야 나쁜 영어로 죄송합니다 ..

미리 감사드립니다!

답변

0

테스트 할 서버가 없으면 재생하기 어렵습니다. 그러나 두 가지 : 당신은 감가 상각 사용

  1. LIB는, 당신이 두 번째 매개 변수에

  2. 다른 (예를 들어 AFNetworking)에 대한 이동하는 것을 고려 "& vb_login_password ="나는 더 '&가 없을 것으로 판단 ' 캐릭터. 또한 끝에 '='을 제거하십시오.

HTTPS가없는 경우 wireshark를 사용하여 작동하는 프로그램 및 사용자 버전의 패킷을 확인할 수 있습니다. 그런 다음 두 요청을 비교하여 차이점을 찾습니다.

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 코드를 "로그인 해 주셔서 감사합니다. 사용자 이름"이라고 표시됩니다.