Qt简单发布请求

Mat*_*kes 5 post qt

我正在寻找一个非常简单的POST请求到网页.页面是在php中,将采取任何发布的检查对数据库,然后如果项目在数据库中,则使用密钥进行响应.

我不知道如何在Qt中使用post请求或如何获取返回的信息并将其存储回Qt中的变量.任何帮助都会受到高度赞赏,因为我从Qt方面的空白开始.

我看过其他例子:

/sf/ask/794385161/

如何使用QNetworkAccessManager将数据发布到URL

但我没有看到如何存储PHP脚本的响应

Dam*_*ien 7

opc0de先前的答案对我而言不是POST,而是GET。

这是执行POST请求的方法

void xxx::postRequest(QByteArray & postData)
{
    QUrl url = QUrl("abc.com");


    QNetworkAccessManager * mgr = new QNetworkAccessManager(this);

    connect(mgr,SIGNAL(finished(QNetworkReply*)),this,SLOT(onFinish(QNetworkReply*)));
    connect(mgr,SIGNAL(finished(QNetworkReply*)),mgr,SLOT(deleteLater()));

    QHttpMultiPart http;

    QHttpPart receiptPart;
    receiptPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"data\""));
    receiptPart.setBody(postData);

    http.append(receiptPart);

    mgr->post(QNetworkRequest(url), http);
}

void xxx::onFinish(QNetworkReply *rep)
{

}
Run Code Online (Sandbox Code Playgroud)

这里的文档

  • `mgr->post(QNetworkRequest(url), http);` 在 Qt 5.15 中无法编译(没有匹配的函数) (2认同)

dak*_*aka 6

QNetworkAccessManager * manager = new QNetworkAccessManager(this);

QUrl url("https://accounts.google.com/o/oauth2/token");
QNetworkRequest request(url);

request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

QUrlQuery params;
params.addQueryItem("client_id", "...");
params.addQueryItem("client_secret", "...");
params.addQueryItem("code", "...");
// etc

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

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

来源


opc*_*0de -1

将完成的QNetworkAccessManager信号连接到您的插槽并使用QNetworkReply您应该阅读该网页的所有内容.

这是一个例子,它可以很容易地适应post方法.

void MainWindow::on_pushButton_clicked()
{
    QNetworkAccessManager * mgr = new QNetworkAccessManager(this);
    connect(mgr,SIGNAL(finished(QNetworkReply*)),this,SLOT(onfinish(QNetworkReply*)));
    connect(mgr,SIGNAL(finished(QNetworkReply*)),mgr,SLOT(deleteLater()));

    mgr->get(QNetworkRequest(QUrl("http://www.google.com")));

}

void MainWindow::onfinish(QNetworkReply *rep)
{
    QByteArray bts = rep->readAll();
    QString str(bts);
    QMessageBox::information(this,"sal",str,"ok");

}
Run Code Online (Sandbox Code Playgroud)

  • 这并没有回答如何执行 POST 请求的问题,Post 需要数据,这只是一个 GET 请求。 (11认同)