刚开始学习网络编程,搜了一个获取网页内容的简单例子,用QTcreater构建通过,运行的时候报
“qt.network.ssl: QSslSocket: cannot call unresolved function d2i_DHparams
qt.network.ssl: QSslSocket: cannot call unresolved function DH_free”
但是又能成功获取网页信息。
运行环境是(win10 + QT5.8 MSVC2013 + VS2013) (64位)
网上搜了好几个小时,基本都是在说libeay32.dll ssleay32.dll这两个文件的事,我已经尝试过拷贝到D:\Qt\Qt5.8.0\5.8\msvc2013_64\bin下面,拷贝到debug文件夹里面,全都没用。
代码如下:
#include "mainwindow.h"
#include <QUrl>
#include <QVariant>
#include "ui_mainwindow.h"
#include <qdebug.h>
#include <QtNetwork>
#include <QNetworkAccessManager>
#include <QNetworkReply>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_NetManger = new QNetworkAccessManager(this);
QUrl url("http://news.163.com/17/0523/20/CL57EDNG0001875N.html");
QObject::connect(m_NetManger, SIGNAL(finished(QNetworkReply*)),
this, SLOT(finishedSlot(QNetworkReply*)));
m_NetManger->get(QNetworkRequest(url));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::finishedSlot(QNetworkReply *m_Reply)
{
m_Reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
m_Reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (m_Reply->error() == QNetworkReply::NoError)
{
QByteArray bytes = m_Reply->readAll();
QString string = QString::fromUtf8(bytes);
qDebug()<< string.left(100);
}
else
{
qDebug()<< m_Reply->errorString();
}
m_Reply->deleteLater();
}