Russian Qt Forum

Qt => Вопросы новичков => Тема начата: speedhack от Декабрь 27, 2016, 19:53



Название: Помогите написать правильный POST запрос
Отправлено: speedhack от Декабрь 27, 2016, 19:53
Ребята подскажите как правильно написать следующее приложение:
Есть json который нужно отправить на http сервер и в результате получить json файл
Сервер понимает только POST запросы.
json
{"email":email,"password:" password}
в результате должен приди json  с куки и токенами


Название: Re: Помогите написать правильный POST запрос
Отправлено: kambala от Декабрь 27, 2016, 20:53
в чем конкретно подсказать правильность? берешь объект QNetworkAccessManager и вызываешь у него метод post() со своим джейсоном, данные ответа превращаешь в QJsonObject.


Название: Re: Помогите написать правильный POST запрос
Отправлено: speedhack от Декабрь 27, 2016, 21:03
в чем конкретно подсказать правильность? берешь объект QNetworkAccessManager и вызываешь у него метод post() со своим джейсоном, данные ответа превращаешь в QJsonObject.
В том то и дело что я делаю все через  QNetworkAccessManager но вместо того что бы он отправлял json он выдает ошибку на connect и дальше дела не идут.
У вас случайно нет готового примера?
Я просто пишу не в классе а в функциях и из за этого он ругается на this постоянно. Даже адекватного запроса отправить не могу. В main просто как по мне вызывать функции куда проще.
Я уже кучу вариантов перелистал и нигде нормального варианта нет так как я юзаю qml и пишу под мобильные платформы.


Название: Re: Помогите написать правильный POST запрос
Отправлено: kambala от Декабрь 27, 2016, 22:32
ну используй QObject::connect вместо просто connect. а переменную типа QNetworkAccessManager придется делать статической, если запрос делается не в main, раз такая неприязнь к классам.


Название: Re: Помогите написать правильный POST запрос
Отправлено: speedhack от Декабрь 28, 2016, 12:00
ну используй QObject::connect вместо просто connect. а переменную типа QNetworkAccessManager придется делать статической, если запрос делается не в main, раз такая неприязнь к классам.

Я написал следующий запрос:

Код:
QNetworkAccessManager * massage = new QNetworkAccessManager() ;
QUrl urlDoLogin("http://example.ru:4576/api/oauth/login");
QByteArray postData;
postData+="{\"email\": \"example@gmail.com\", \"password\": \"qweqwe\"}";
QNetworkRequest request(urlDoLogin);
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
QNetworkReply* reply=massage->post(request,postData);
QObject::connect( reply, SIGNAL(finished()), this, SLOT(replyFinished()));

Но вот как с this разобраться понять не могу.


Название: Re: Помогите написать правильный POST запрос
Отправлено: kambala от Декабрь 28, 2016, 18:44
можно приконнектиться к лямбде вместо слота:
Код
C++ (Qt)
QObject::connect( reply, &QNetworkReply::finished, [reply]{
   QByteArray data = reply->readAll();
   // обработать полученные данные
});

и, как уже сказали в другой теме, не помешает поизучать С++ и основы Qt.


Название: Re: Помогите написать правильный POST запрос
Отправлено: speedhack от Декабрь 28, 2016, 19:48
можно приконнектиться к лямбде вместо слота:
Код
C++ (Qt)
QObject::connect( reply, &QNetworkReply::finished, [reply]{
   QByteArray data = reply->readAll();
   // обработать полученные данные
});

и, как уже сказали в другой теме, не помешает поизучать С++ и основы Qt.
Ок спасибо! Та я просто программировал на java и решил вернутся опять на Qt вот забыл все. Да и многое поменялось с 4 версии.