0

当我将 cookie jar 设置为我的网络管理器时SIGSEGV,我应该如何将 cookiejar 设置为我的网络管理器?
//我在 Windows 10 上使用带有 Mingw
PS 的 QT5.8:我尝试了很多示例,但我得到了相同的结果。

类文件:

#include "httpcontroller.h"
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QHttpMultiPart>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QHttpPart>
#include <QFile>
#include <QEventLoop>
HttpController::HttpController(QObject *parent) : QObject(parent)
{
    cookies = new QNetworkCookieJar();
    manager = new QNetworkAccessManager(parent);
    manager->setCookieJar(cookies);
}

QString HttpController::Get(const QString &url)
{
    QNetworkRequest request ;
    request.setUrl(QUrl(url));
    QNetworkReply * reply = manager->get(request);
    QEventLoop loop ;
    connect(reply,SIGNAL(finished()),&loop,SLOT(quit()));
    connect(reply,SIGNAL(error(QNetworkReply::NetworkError)),&loop,SLOT(quit()));
    loop.exec();
    if(reply->error()){
       return QString("Error");
    }else{
        QString response = QString(reply->readAll()) ;
        reply->deleteLater();
        return response ;
    }
}

QString HttpController::Post(const QString &url, QHttpMultiPart *multipart)
{
    QNetworkRequest request ;
    request.setUrl(QUrl(url));
    QNetworkReply * reply = manager->post(request,multipart);
    QEventLoop loop ;
    connect(reply,SIGNAL(finished()),&loop,SLOT(quit()));
    connect(reply,SIGNAL(error(QNetworkReply::NetworkError)),&loop,SLOT(quit()));
    loop.exec();
    if(reply->error()){
       return QString("Error");
    }else{
        QString response = QString(reply->readAll()) ;
        reply->deleteLater();
        return response ;
    }
}

头文件:

#ifndef HTTPCONTROLLER_H
#define HTTPCONTROLLER_H

#include <QObject>
#include <QHttpMultiPart>
#include <QNetworkCookieJar>
#include <QNetworkAccessManager>
class HttpController : public QObject
{
    Q_OBJECT
public:
    explicit HttpController(QObject *parent = 0);
    QString Get(const QString& url);
    QString Post(const QString& url , QHttpMultiPart *multipart);
signals:

public slots:
private:
    QNetworkCookieJar *cookies;
    QNetworkAccessManager *manager ;

};

#endif // HTTPCONTROLLER_H
4

0 回答 0