HTTP リクエストに問題があります
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();
}
そして、私が演じるとき
QUrl url("http://www.example-xml-ws.org");
RequestHTTP http;
http.sendRequest(url, this, "processData(QBuffer*)");
後にログにエラーが表示されますbool result = connect(reply, SIGNAL(finished()), this, SLOT(onRequestFinished()));
3 月 15 日 17:20:55.032 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_type: タイプは NULL でした
3 月 15 日 17:20:55.032 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_ip_status: ip_ok は NULL でした
3 月 15 日 17:20:55.032 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_num_ip_addresses: num_ip_addresses は NULL でした
3 月 15 日 17:20:55.033 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_type: タイプは NULL でした
3 月 15 日 17:20:55.033 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_ip_status: ip_ok は NULL でした
3 月 15 日 17:20:55.033 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_num_ip_addresses: num_ip_addresses は NULL でした
3 月 15 日 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_type: タイプは NULL でした
3 月 15 日 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_ip_status: ip_ok は NULL でした
3 月 15 日 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_num_ip_addresses: num_ip_addresses は NULL でした
3 月 15 日 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_type: タイプは NULL でした
3 月 15 日 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_ip_status: ip_ok は NULL でした
3 月 15 日 17:20:55.034 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_num_ip_addresses: num_ip_addresses は NULL でした
3 月 15 日 17:20:55.036 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_type: タイプは NULL でした
3 月 15 日 17:20:55.036 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_ip_status: ip_ok は NULL でした
3 月 15 日 17:20:55.036 org.example.testDev_xamplefmeb1c2e99.37572818 デフォルト 8900 エラー netstatus_interface_get_num_ip_addresses: num_ip_addresses は NULL でした
結果として、リクエストは正常に送信されましたが、問題は、なぜこの出力が表示されるのかということです。