Название: QNetworkAccessManager POST запрос - не могу отправить! Отправлено: Pripyat от Март 22, 2018, 12:17 Добрый день. Понимаю, что подобный вопрос не первый задаю, но не работает.
На планшете работает сервис на порте 7778. Ему надо послать POST запрос - JSON. QT 5.6 Даже ответа получать не надо, на планшете будет видно, что пришел запрос. Код: QNetworkAccessManager *accessManager = new QNetworkAccessManager(); accessManager->setProxy(QNetworkProxy::NoProxy); QNetworkRequest request; QString URL = "http://" + IP + ":7778"; qDebug() << "URL " << URL; QUrl Url; Url.setUrl(IP); Url.setPort(7778); request.setUrl(Url); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); QByteArray data; data.append("{\"cmd\" : \"enable\"}"); QNetworkReply* reply = accessManager->post(request, data); qDebug() << reply->errorString(); qDebug() << reply->error(); reply выдаёт Цитировать "Unknown error" QNetworkReply::NetworkError(NoError) Данный пример построит по примеру сотни из интернета. И там это работает. Но у меня что-то не работает. Единственное отличие - это порт 7778, там шлют без указания портов. Я написал тестовый сервер на Python: Код
Он точно принимает соединения и выводит посылки, пробовал с другими терминалами. С данным кодом он не показывает соединения. Явно где то накосячил. В Qt с сетью работаю в первый раз, так что прошу извинить за глупые вопросы. Заранее спасибо большое всем за помощь. Я даже пытаюсь уже кому нибудь отправить запрос на первый попавшийся сайт и поймать в Wireshark хоть какой нибудь обмен. Запрос конечно не дойдет, но во всяком случае должны быть обращения к DNS, фигурирование названия сайта Название: Re: QNetworkAccessManager POST запрос - не могу отправить! Отправлено: gil9red от Март 22, 2018, 13:50 Попробуйте на ваш сокет на питоне отправить запрос через QTcpSocket
Название: Re: QNetworkAccessManager POST запрос - не могу отправить! Отправлено: Old от Март 22, 2018, 13:57 Ну и правильно, что "reply выдает". :)
Это его правильное состояние. Метод post запускает выполнение запроса, выполняться он будет ассинхронно. Подпишитесь на необходимые сигналы и посмотрите как будет изменяться состояние запроса. Название: Re: QNetworkAccessManager POST запрос - не могу отправить! Отправлено: Pripyat от Март 22, 2018, 14:00 Добрый день, спасибо за ответы.
Через сокеты отправляется: Код: QString IP = "192.168.0.127"; int Port = 7778; QTcpSocket* client = new QTcpSocket(); client->connectToHost(IP, Port); if (!client->waitForConnected(3000)) { qDebug() << "No connection"; return 1; } QByteArray Post, Json; Json.append("{\"command\" : \"enableProxy\"}"); Post.append("POST / HTTP/1.1\r\n"); Post.append(QString::sprintf("Host: %s:%d\r\n", IP, Port); Post.append(QString::sprintf("Content-Length: %d\r\n", Json.size())); Post.append(Json); client->write(Post); if (!client->waitForBytesWritten()) if (!client->waitForConnected(3000)) { qDebug() << "No send"; return 1; } client->close(); qDebug() << client->errorString(); Название: Re: QNetworkAccessManager POST запрос - не могу отправить! Отправлено: Old от Март 22, 2018, 14:03 Через сокеты отправляется: Когда вы все руками формируете... Ну если вам так удобней. :) |