когда я устанавливаю банку печенья своему сетевому менеджеру, я получаю SIGSEGV
Как мне установить cookiejar для моего сетевого менеджера?
// Я использую QT5.8 в Windows 10 с Mingw
PS: я пробовал много примеров, но у меня такие же результаты.
Файл класса:
#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
Задача ещё не решена.
Других решений пока нет …