Wrote a simple class to send a post request. The problem is that on the line

reply = manager.post (request, multiPart);

happens SEG FAULT. What am I doing wrong?

HTTP_Adapter.h

#ifndef HTTP_ADAPTER_H #define HTTP_ADAPTER_H #include <QObject> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include <QHttpMultiPart> #include <QDebug> class HTTP_Adapter : public QObject { Q_OBJECT QNetworkAccessManager manager; QNetworkReply *reply; QUrl apiUrl; QByteArray requestString; public: explicit HTTP_Adapter(QObject *parent = 0); QHttpMultiPart *multiPart; signals: public slots: void getReplyFinished(); void readyReadReply(); }; #endif // HTTP_ADAPTER_H 

http_adapter.cpp

 #include "http_adapter.h" HTTP_Adapter::HTTP_Adapter(QObject *parent) : QObject(parent) { apiUrl = "http://127.0.0.1/ping/"; requestString = "method=getQuote&format=xml"; QNetworkRequest request(apiUrl); multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\"")); textPart.setBody("my text"); multiPart->append(textPart); //reply = manager.post(request, requestString); reply = manager.post(request, multiPart); multiPart->setParent(reply); connect(reply, SIGNAL(finished()),this, SLOT(getReplyFinished())); connect(reply, SIGNAL(readyRead()), this, SLOT(readyReadReply())); } void HTTP_Adapter::getReplyFinished() { reply->deleteLater(); multiPart->deleteLater(); } void HTTP_Adapter::readyReadReply() { QString answer = QString::fromUtf8(reply->readAll()); qDebug() << answer << endl; } 

main.cpp

 #include <QCoreApplication> #include <http_adapter.h> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); HTTP_Adapter http; return a.exec(); } 
  • No errors. Everything works. - maestro

0