AFNetworking异步POST请求的用户名和密码参数(Objective-C iOS)


AFNetworking asynchronous POST request for username and password parameter (Objective-C iOS)

我是iOS开发的新手,我被困在我的小项目中,我必须创建对php网站的异步POST请求。我在网上阅读了资源,发现AFNetworking最适合做这项工作,所以我通过终端使用cocoapods安装了AFNetworking 2.4。我有一个视图控制器,它有 2 个文本字段(用户名和密码),每当我按下登录按钮时,我都会向 php 网站发送异步 POST 请求。POST 请求必须包含参数"用户名"和"密码",并将收到带有"代码"和"消息"的 JSON 响应。我必须在 UIAlert 中显示解析的代码和消息,以及 api 调用花费的时间(以毫秒为单位)。唯一有效的登录名是用户名:Yomaki密码:asdfgh。登录成功后,点击UIAlert上的"确定"应该将我们带回MainMenuViewController。请查看我在下面尝试过的代码。我尝试在线遵循几个教程,但没有奏效。

请看下面的代码,

(IBAction)loginButton:(id)sender
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSDictionary *parameters = @{@"Yomaki": _usernameTextField, @"asdfgh": _passwordTextField};
    NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"PHP URL HERE"]];
    AFHTTPRequestOperation * operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
}

请帮助我编写代码,因为这是我第一次向 php 网站发送异步 POST 请求。

提前谢谢。

您不想使用_usernameTextFieldUITextField),而是_usernameTextField.text,或者更好的是self.usernameTextField.text(该测试字段的NSString属性)。密码也是如此。

我还可以利用POST方法:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"userid": self.usernameTextField.text, @"password": self.passwordTextField.text};
[manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

请注意,在您的字典中,您将字段名称(大概类似于 useridpassword ,但请咨询您的 Web 服务作者)替换为似乎是示例用户 ID/密码值的内容。我认为您想恢复原始字段名称。

来自: Junda Ong 教程

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:@"yourURL"
   parameters: parameters
      success:^(AFHTTPRequestOperation *operation, id responseObject) {
          NSLog(@"JSON: %@", responseObject); }
      failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          NSLog(@"Error: %@", error);
      }];
NSURL * url = @"your url";
NSString * user = ([userField.text length] == 0) ? @"" : userField.text;
NSString * pass = ([passField.text length] == 0) ? @"" : passField.text;
NSMutableDictionary * postVars = [NSMutableDictionary dictionary];
[postVars setObject:user forKey:@"username"];
[postVars setObject:pass forKey:@"password"];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:url parameters:postVars success:^(AFHTTPRequestOperation *operation, id responseObject) {
    if ([responseObject isKindOfClass:[NSDictionary class]]){
        if ([responseObject objectForKey:@"code"]) && ([responseObject objectForKey:@"message"]){
            NSString * code = [responseObject objectForKey:@"code"];
            NSString * message = [responseObject objectForKey:@"message"];
        }
    }
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // something went wrong with your http post
}];