Russian Qt Forum
Сентябрь 30, 2024, 08:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите написать правильный POST запрос  (Прочитано 4106 раз)
speedhack
Гость
« : Декабрь 27, 2016, 19:53 »

Ребята подскажите как правильно написать следующее приложение:
Есть json который нужно отправить на http сервер и в результате получить json файл
Сервер понимает только POST запросы.
json
{"email":email,"password:" password}
в результате должен приди json  с куки и токенами
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Декабрь 27, 2016, 20:53 »

в чем конкретно подсказать правильность? берешь объект QNetworkAccessManager и вызываешь у него метод post() со своим джейсоном, данные ответа превращаешь в QJsonObject.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
speedhack
Гость
« Ответ #2 : Декабрь 27, 2016, 21:03 »

в чем конкретно подсказать правильность? берешь объект QNetworkAccessManager и вызываешь у него метод post() со своим джейсоном, данные ответа превращаешь в QJsonObject.
В том то и дело что я делаю все через  QNetworkAccessManager но вместо того что бы он отправлял json он выдает ошибку на connect и дальше дела не идут.
У вас случайно нет готового примера?
Я просто пишу не в классе а в функциях и из за этого он ругается на this постоянно. Даже адекватного запроса отправить не могу. В main просто как по мне вызывать функции куда проще.
Я уже кучу вариантов перелистал и нигде нормального варианта нет так как я юзаю qml и пишу под мобильные платформы.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #3 : Декабрь 27, 2016, 22:32 »

ну используй QObject::connect вместо просто connect. а переменную типа QNetworkAccessManager придется делать статической, если запрос делается не в main, раз такая неприязнь к классам.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
speedhack
Гость
« Ответ #4 : Декабрь 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 разобраться понять не могу.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #5 : Декабрь 28, 2016, 18:44 »

можно приконнектиться к лямбде вместо слота:
Код
C++ (Qt)
QObject::connect( reply, &QNetworkReply::finished, [reply]{
   QByteArray data = reply->readAll();
   // обработать полученные данные
});

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
speedhack
Гость
« Ответ #6 : Декабрь 28, 2016, 19:48 »

можно приконнектиться к лямбде вместо слота:
Код
C++ (Qt)
QObject::connect( reply, &QNetworkReply::finished, [reply]{
   QByteArray data = reply->readAll();
   // обработать полученные данные
});

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


Страница сгенерирована за 0.121 секунд. Запросов: 23.