2

I have problem with HTTP request

request.hpp

#ifndef PROGRAMMEREQUEST_HPP_
#define PROGRAMMEREQUEST_HPP_

#include <QObject>

class RequestHTTP : public QObject
{
    Q_OBJECT

public:
    RequestHTTP();
    virtual ~RequestHTTP() {}
    void sendRequest(QUrl url, QObject *target, const QString signature);

private:
    QString callbackMethodName;
    QObject *callbackObject;

private slots:
    void onRequestFinished();

};

#endif

request.cpp

#include "request.hpp"

#include <QNetworkReply>
#include <QNetworkRequest>
#include <QNetworkAccessManager>

#include <QBuffer>
#include <QIODevice>

#include <QMetaMethod>

RequestHTTP::RequestHTTP() : callbackObject(NULL) { }

void RequestHTTP::sendRequest(QUrl url, QObject *target, const QString signature)
{
    this->callbackObject = target;
    this->callbackMethodName = signature;

    QNetworkRequest request = QNetworkRequest();
    request.setUrl(url);

    QNetworkAccessManager *pNetworkAccessManager = new QNetworkAccessManager(this);
    QNetworkReply* reply = pNetworkAccessManager->get(request);

    bool result = connect(reply, SIGNAL(finished()), this, SLOT(onRequestFinished()));

    Q_UNUSED(result);
    Q_ASSERT(result);
}

void RequestHTTP::onRequestFinished()
{
    QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());

    if (reply && reply->error() == QNetworkReply::NoError)
    {
        QBuffer device;
        device.setData(reply->readAll());
        device.open(QIODevice::ReadOnly);

        QByteArray normalizedSignature = QMetaObject::normalizedSignature(callbackMethodName);

        int methodIndex = callbackObject->metaObject()->indexOfMethod(normalizedSignature);

        QMetaMethod method = callbackObject->metaObject()->method(methodIndex);
        method.invoke(callbackObject,
                       Qt::DirectConnection, Q_ARG(QBuffer *, &device));
    }
    else
    {
        // Problem with the reply.
        // ...
    }

    reply->deleteLater();
}

And when I perform

QUrl url("http://www.example-xml-ws.org");
RequestHTTP http;
http.sendRequest(url, this, "processData(QBuffer*)");

I see in errors in log after bool result = connect(reply, SIGNAL(finished()), this, SLOT(onRequestFinished()));

Mar 15 17:20:55.032 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_type: type was NULL

Mar 15 17:20:55.032 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_ip_status: ip_ok was NULL

Mar 15 17:20:55.032 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_num_ip_addresses: num_ip_addresses was NULL

Mar 15 17:20:55.033 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_type: type was NULL

Mar 15 17:20:55.033 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_ip_status: ip_ok was NULL

Mar 15 17:20:55.033 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_num_ip_addresses: num_ip_addresses was NULL

Mar 15 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_type: type was NULL

Mar 15 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_ip_status: ip_ok was NULL

Mar 15 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_num_ip_addresses: num_ip_addresses was NULL

Mar 15 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_type: type was NULL

Mar 15 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_ip_status: ip_ok was NULL

Mar 15 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_num_ip_addresses: num_ip_addresses was NULL

Mar 15 17:20:55.036 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_type: type was NULL

Mar 15 17:20:55.036 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_ip_status: ip_ok was NULL

Mar 15 17:20:55.036 org.example.testDev_xamplefmeb1c2e99.37572818 default 8900 ERROR netstatus_interface_get_num_ip_addresses: num_ip_addresses was NULL

As result request sent successfully, but the question is why I see this output?

Community
  • 1
  • 1
CAMOBAP
  • 5,523
  • 8
  • 58
  • 93

0 Answers0