私は奇妙な問題を抱えていましたが、何時間も検索しましたが解決策が見つかりませんでした。Qt QNetworkAccessManagerは常に空のデータを返し、ステータスコードは0です
Qtを使用してWindowsデスクトップアプリケーションを作成しています。インターネットからファイルをダウンロードしたいので、QNetworkAccessManager
を使用しています。続いてメインウィンドウのコンストラクタである私のテストコード、次のとおりです。
QNetworkRequest request;
request.setUrl(QUrl("www.example.org"));
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
if(manager->networkAccessible() == QNetworkAccessManager::Accessible){
qDebug() << "Network accessible";
}
else{
qDebug() << "Network is not accessible";
}
manager->get(request);
connect(manager, manager->finished, this, connFinished);
をそして次はconnFinished
機能です:
void MainWindow::connFinished(QNetworkReply *r){
int statusCode = r->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
qDebug() << statusCode;
}
コードを実行した後、出力は次のとおりです。
Network accessible
0
I私のマシンでwww.example.org
にアクセスでき、リダイレクトなしがあることを確かめてください。私のPCがインターネットから切断されても、HTTPステータスコードは0です。問題はまだ新しいプロジェクトで発生するので、このプロジェクトの問題だけではありません。
私Qtのバージョン:Qtの5.5.1(MSVC 2013、32ビット)
コンパイラ:gccのバージョン5.1.0(TDM-1)
が、これはなぜ起こったか誰もが知っているあります?ありがとう!
プロジェクトファイルやコード:
test.pro
QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = test
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QNetworkAccessManager>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void connFinished(QNetworkReply *r);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QNetworkRequest request;
request.setUrl(QUrl("www.example.org"));
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
if(manager->networkAccessible() == QNetworkAccessManager::Accessible){
qDebug() << "Network accessible";
}
else{
qDebug() << "Network is not accessible";
}
manager->get(request);
connect(manager, manager->finished, this, connFinished);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::connFinished(QNetworkReply *r){
int statusCode = r->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
qDebug() << statusCode;
}
main.cppに
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
は –
はありがとう...エラーを処理するようにしてください。私は問題を発見した。私は "www.exmaple.org"ではなく "http://www.example.org"を使用しなければなりません... – shell32