Qt Post请求正在执行但失败

Qt Post request executing but failing

本文关键字:执行 失败 Post 请求 Qt      更新时间:2023-10-16

不知何故,我在使用Qt时遇到了问题。我正在尝试向服务器发送 POST 请求。

在我制作了一个带有 Windows 标头的 C++ 程序来执行工作正常的 POST 请求之前,但现在我想为该程序制作一个 GUI。

100%确定服务器端的php代码没问题,我遵循了Qt和Stack Overflow上的示例,但是我使用Qt的数据库中没有收到任何数据。

这是开机自检代码:

HttpPOST.h

#ifndef HTTPPOST_H
#define HTTPPOST_H
#include <QObject>
#include <QtNetwork>
#include <QHttpMultiPart>
class HttpPOST : public QObject
{
Q_OBJECT
public:
    HttpPOST(QString url);
    void postData(QList<QString> parameter, QList<QString> value);
    const QString EQUALS = "=";
    const QString AND = "&";
signals:
public slots:
    void onFinish(QNetworkReply *reply);
private:
    QNetworkAccessManager * manager;
    QUrl url;
    QByteArray data;
};
#endif // HTTPPOST_H

HttpPOST

.cpp
#include "httppost.h"
HttpPOST::HttpPOST(QString url)
{
    this->url = QUrl(url);
}
void HttpPOST::postData(QList<QString> parameter, QList<QString> value)
{
    data.clear();
    for (int i=0; i<parameter.size(); i++) {
        data.append(parameter[i]);
        data.append(EQUALS);
        data.append(value[i]);
        if(i < parameter.size()-1){data.append(AND); }
    }
    manager = new QNetworkAccessManager(this);
    connect(manager,
            SIGNAL(finished(QNetworkReply*)),
            this,
            SLOT(onFinish(QNetworkReply*)));
    connect(manager,
            SIGNAL(finished(QNetworkReply*)),
            manager,
            SLOT(deleteLater()));
    QHttpMultiPart *http = new QHttpMultiPart(QHttpMultiPart::FormDataType, this);
    QHttpPart receiptPart;
    receiptPart.setHeader(QNetworkRequest::ContentDispositionHeader, 
                          QVariant("form-data; name="data""));
    receiptPart.setBody(data);
    http->append(receiptPart);
    manager->post(QNetworkRequest(url), http);
}
void HttpPOST::onFinish(QNetworkReply *reply)
{
    qDebug("POST request finished!");
    qDebug(reply->readAll());
}

我目前对自己做错了什么一无所知。

任何可以帮助我的人都是为了工作中的一个项目。

如果你刚刚从Windows C++转到Qt C++。你有QApplication吗,你在主函数中调用exec((吗?

如果没有事件循环,Qt IO 类将无法工作。听起来您要么没有主事件循环,要么在不同的线程中没有主事件循环。