ASIFormDataRequest登录php。需要帮助

时间:2011-10-25 03:49:39

标签: objective-c login md5 iphone-sdk-4.1 asiformdatarequest

我尝试使用obj c,ASIFormDataRequest登录网站的成员区域。我真的需要一些帮助。我现在卡住了。我该怎么做才能使它发挥作用?  示例代码会很棒。 谢谢。

互联网上的登录页面:

 
<form action="https://www.example.org/login.php" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">


<input type="hidden" name="do" value="login" />
<input type="hidden" name="url" value="/login.php" />
<input type="hidden" name="vb_login_md5password" />
<input type="hidden" name="vb_login_md5password_utf" />


<fieldset class="fieldset">
<td>Username:<br /><input type="text" name="vb_login_username"/>
<td>password:<br /><input type="password" name="vb_login_password"/>

<label for="cb_cookieuser"><input type="checkbox" name="cookieuser" value="1" id="cb_cookieuser"/>Remember me?</label>
<input type="submit" class="button" value="Logga in" accesskey="s" tabindex="1" />
<input type="reset" class="button" value="&Aring;terst&auml;ll f&auml;lt" accesskey="r" tabindex="1" />
</table>
</fieldset>


</form>

到目前为止我的代码:

NSString *username, *password; 
        username = [NSString stringWithFormat:@"%@", usernameField.text];
        password = [NSString stringWithFormat:@"%@", passwordField.text];
        NSLog(@"Trying to sign in with user:%@ pass:%@",username,password);

        ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"https://www.example.org/login.php"]];
        [request setPostValue:username forKey:@"vb_login_username"];
        [request setPostValue:password forKey:@"vb_login_password"];
        [request setTimeOutSeconds:120];
        [request setDelegate:self];
        [request startAsynchronous];

+ (NSString*)md5HexDigest:(NSString*)input {
    const char* str = [input UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(str, strlen(str), result);

    NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];
    for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
        [ret appendFormat:@"%02x",result[i]];
    }
    return ret;
}

1 个答案:

答案 0 :(得分:0)

有时使用NSURL导致URLWithString无法正常使用, 为什么你创建了两个nsstring NSString *username, *password;。如果你没有修改它们,那么你可以直接使用它们,如: -

试试这个: -

   NSString *str = @"https://www.example.org/login.php";
   NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
   ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
  [request setPostValue:usernameField.text forKey:@"vb_login_username"];
  [request setPostValue:passwordField.text forKey:@"vb_login_password"];
  [request setTimeOutSeconds:120];
  [request setDelegate:self];
  [request startAsynchronous];
  NSLog(@"%@",[request responseString]);
  NSLog(@"%d",[request responseStatusCode]);