使用Qt中的命名参数列表发出HTTP POST请求

sas*_*alm 1 c++ post qt http

我需要从Qt应用程序向服务器发出HTTP POST请求。

POST请求将包含一个命名值列表,即键/值对。它们主要是字母数字字符串,但可以包含特殊字符,例如引号,空格等。

在Qt中执行此类POST请求的规范方法是什么?

小智 6

当前答案适用于Qt4。语法已针对Qt 5进行了更改,如下所示:

QUrlQuery params;

params.addQueryItem("key1", "value1");
params.addQueryItem("key2", "value2");

QUrl resource("http://server.com/form.php");
QNetworkAccessManager* manager = new QNetworkAccessManager(this);

connect(manager, SIGNAL(finished(QNetworkReply*)), this, 
SLOT(handleEndOfRequest(QNetworkReply*)));

QNetworkRequest request(resource);
//Force Content-Type header
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

manager->post(request, params.query(QUrl::FullyEncoded).toUtf8());
Run Code Online (Sandbox Code Playgroud)

一些背景信息:http : //doc.qt.io/qt-5/qurl-obsolete.html

此处描述制作Qt版本的代码: 如何将QUrl addQueryItem移植到Qt5的QUrlQuery?