Я встретил странную проблему, и я искал несколько часов, но не могу найти решение.Qt QNetworkAccessManager всегда возвращает пустые данные, а код состояния 0
Я использую Qt для записи рабочего стола Windows, и я хочу загрузить файл из Интернета, поэтому я использую QNetworkAccessManager
. Ниже мой тестовый код, который находится в конструкторе MainWindow в:
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
можно получить на моей машине и есть нет перенаправления. Код состояния HTTP равен 0, даже мой компьютер отключен от Интернета. Проблема все еще происходит в новом проекте, поэтому проблема не только этого проекта.
Мой Qt версии: Qt 5.5.1 (MSVC 2013, 32 бит)
Компилятор: GCC версии 5.1.0 (ТДМ-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();
}
Try для обработки ошибок ... –
Спасибо. Я нашел проблему. Я должен использовать «http://www.example.org», а не «www.exmaple.org» ... – shell32