Beim Senden von POST-Daten an den Server, von Qt-Anwendung sieht alles gut, aber Datenteil des HTTP-Teils wurden nicht gesendet. In Wireshark im POST-Paket ist der korrekte "Content-Length" -Wert sichtbar, aber die Größe des gesamten HTTP-Segments beträgt nur etwa 226 Bytes (ist unabhängig von der POST-Datengröße).QNetworkAccessManager sendet keine Daten Teil der POST-Anfrage
Ich kann den Grund nicht finden, warum Datenteil nicht gesendet wird. Irgendeine Idee?
Die Anwendung wird in der Konsole ausgeführt. Eine vollständige Quelle ist unten.
project.pro:
QT += widgets
QT -= gui
QT += network
CONFIG += c++11
TARGET = POSTrequest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
main.cpp:
#include <QObject>
#include <QApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QNetworkRequest request(QUrl("http://www.server.com/index.php"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QNetworkAccessManager manager;
QNetworkReply *reply = manager.post(request, "a=aaaaaa");
QObject::connect(reply, SIGNAL(finished()), &a, SLOT(quit()));
return a.exec();
}
Können Sie posten Sie Ihre gesamte Funktion oder Haupt wo dies geschieht? Es kann sein, dass der Manager den Bereich verlässt oder so. Hier ist, was es über die gesendeten Daten sagt: 'Daten müssen zum Lesen geöffnet sein und müssen gültig bleiben, bis das fertige() Signal für diese Antwort ausgegeben wird. ... Was passiert nach manager.post (...) ? –