AFNetworking асинхронный запрос POST для параметра имени пользователя и пароля (Objective-C iOS)

Я новичок в разработке для iOS, и я застрял в своем небольшом проекте, где мне нужно создать асинхронный POST-запрос к сайту php. Я читал ресурсы онлайн и обнаружил, что AFNetworking лучше всего подходит для этой работы, поэтому я установил AFNetworking 2.4, используя cocoapods через терминал. У меня есть контроллер представления, который имеет 2 текстовых поля (имя пользователя и пароль). Всякий раз, когда я нажимаю кнопку «Вход», я отправляю асинхронный запрос POST на веб-сайт php. Запрос 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];

}

Пожалуйста, помогите мне с кодом, так как я впервые отправляю асинхронный запрос POST на сайт php.

Заранее спасибо.

1

Решение

Вы не хотите использовать _usernameTextField ( UITextField), скорее _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);
}];

Обратите внимание, что в вашем словаре вы заменили имена полей (предположительно что-то вроде userid а также password, хотя и посоветуйтесь с авторами вашего веб-сервиса) с примерами значений идентификатора пользователя / пароля. Я думаю, что вы хотите восстановить исходные имена полей.

1

Другие решения

От: Джунда Онг Руководство

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

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

}];
0
По вопросам рекламы [email protected]