一系列失败的尝试使我尝试使用 Qt 5.1 向Pastebin网站的主页发出简单的 GET 请求:
typedef void (QNetworkReply::*ReplyError)(QNetworkReply::NetworkError);
int main(int argc, char *argv [])
{
QCoreApplication app(argc, argv);
QNetworkAccessManager manager;
QNetworkRequest request(QUrl("http://www.pastebin.com"));
QNetworkReply * reply = manager.get(request);
QObject::connect(reply, &QNetworkReply::finished, [reply] {
qDebug() << reply->readAll();
});
QObject::connect(reply, static_cast<ReplyError>(&QNetworkReply::error),
[reply](QNetworkReply::NetworkError code) {
qDebug() << "Error code : " << code;
qDebug() << "Reply : " << reply->readAll();
qDebug() << "Error string : " << reply->errorString();
qDebug() << "HTTP status : " << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
});
return app.exec();
}
过了一会儿,控制台输出:
Error code : 99
Reply : ""
Error string : "Connection timed out"
HTTP status : 0
我还发现它让我在他们的网站上被禁止访问 ip 约 10 分钟(除非我更改我的 VPN 位置,否则我无法使用我的浏览器访问该网站)。
我在 python 中尝试了相同的请求,它运行良好。
这里有什么问题 ?问题来自 Qt 还是 Pastebin?
编辑 :
尝试使用 Qt 4.8.5。得到了同样的结果。
编辑 2:
差不多 2 个月后,我尝试使用相同版本的框架,现在它可以工作了。我猜他们在 Pastbin 网站上修复了一些东西……