【发布时间】:2016-04-11 13:11:42
【问题描述】:
当向服务器发送 POST 数据时,Qt 应用程序看起来一切正常,但 HTTP 部分的数据部分没有发送。在 POST 数据包中的 Wireshark 中可见正确的“Content-Length”值,但整个 HTTP 段的大小仅为 226 字节左右(与 POST 数据大小无关)。
我找不到未发送数据部分的原因。有什么想法吗?
应用程序正在控制台中运行。完整的源代码如下。
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();
}
【问题讨论】:
-
你能把你的整个功能或主要功能发布在发生这种情况的地方吗?经理可能超出范围或其他原因。以下是关于正在发送的数据的说明:
data must be open for reading and must remain valid until the finished() signal is emitted for this reply.... 那么在 manager.post(...) 之后会发生什么?
标签: qt http-post qnetworkaccessmanager