QString MainWindow::HttpGet(const QString url)
{
QString strPageContent;
//获取系统代理并设置
QNetworkProxyQuery proxyQuery(QUrl("https://www.baidu.com"));
QList<QNetworkProxy> proxyList = QNetworkProxyFactory::systemProxyForQuery(proxyQuery);
if(proxyList.count() > 0)
{
mManager->setProxy(proxyList.at(0));
}
//HTTP GET
QNetworkRequest request;
request.setUrl(QUrl(url));
QEventLoop loop;
QNetworkReply *reply = mManager->get(request);
connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
loop.exec();
QString strCodec;
//获取编码方式,用于解码
QStringList contentTypeList = reply->header(QNetworkRequest::ContentTypeHeader).toString().split(";");
foreach (QString content, contentTypeList) {
content = content.trimmed();
if(content.toLower().startsWith("charset") && content.split("=").size() > 1)
{
strCodec = content.split("=").at(1).trimmed();;
break;
}
}
QByteArray datagram = reply->readAll();
if(strCodec.isEmpty())
{
strPageContent.append(datagram);
}
else
{
QTextCodec *codec = QTextCodec::codecForName(strCodec.toStdString().c_str());
strPageContent = codec->toUnicode(datagram);
}
return strPageContent;
}
Qt使用系统代理访问网络
最新推荐文章于 2024-05-25 16:03:14 发布