Objective-C POST-запрос не правильно "отправка" - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь разработать приложение для школы, и первый шаг - POST в наш дневник.Мой код выглядит следующим образом:

NSString *usernameText = _username.text;
NSString *passwordText = _password.text;
NSString *post = [NSString stringWithFormat:@"username=%@&password=%@",usernameText, passwordText];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]];
NSURL *url = [NSURL URLWithString:@"(school website, not putting real URL)"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
[_webView loadRequest:request];

Проблема в том, что он не "работает".Веб-просмотр обновлен, но данные не введены и страница не изменилась.Мне интересно, что я сделал не так, и если бы я мог что-то упустить.Заранее спасибо

РЕДАКТИРОВАТЬ: Я попробовал NSURLSession и получил это в своем ответе: (цензурированное имя веб-сайта, дает местоположение)

2018-12-13 20:07:07.277108-0500 sisParsing[29432:2736415] Error: (null)
2018-12-13 20:07:07.277459-0500 sisParsing[29432:2736415] Response: <NSHTTPURLResponse: 0x6000028ce300> { URL: website } { Status Code: 200, Headers {
"Access-Control-Allow-Origin" =     (
    "*"
);
"Cache-Control" =     (
    "no-cache, no-store"
);
"Content-Length" =     (
    13437
);
"Content-Type" =     (
    "text/html; charset=utf-8"
);
Date =     (
    "Fri, 14 Dec 2018 01:07:29 GMT"
);
Expires =     (
    "-1"
);
Pragma =     (
    "no-cache"
);
Server =     (
    "Microsoft-IIS/8.5"
);
"Set-Cookie" =     (
    "ASP.NET_SessionId=hchdpifc13c3hhrowxnjjzfj; path=/; secure; HttpOnly"
);
"X-AspNet-Version" =     (
    "4.0.30319"
);
"X-Powered-By" =     (
    "ASP.NET"
);
} }

1 Ответ

0 голосов
/ 14 декабря 2018

При работе с POST или GET-данными в веб-интерфейсе всегда полезно установить приложение Postman (БЕСПЛАТНО И ЛЕГКО ИСПОЛЬЗОВАТЬ).Попробуйте отправить запрос от Postman с теми же данными (имя пользователя и пароль) и посмотрите, что отвечает веб-сервер.Таким образом, вы будете точно знать, есть ли проблема в вашем коде или бэкэнде.Я не связан с Postman, но в настоящее время я также занимаюсь разработкой веб-приложения, и это лучший инструмент для отладки кода.

В качестве альтернативы, вы также можете попробовать отправить запрос POST без использования веб-просмотра, используяNSURLSession и посмотрите, какой ответ вы получили или какую ошибку выдает ваше приложение.Примерно так:

//before this you need to construct session object with appropriate url and params. (google to see example).

NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
 NSLog("Error: %@", error);
 NSLog("Response: %@", reponse);
}];

[postDataTask resume];

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...