【问题标题】:Connection timed out when trying to access Pastebin with Qt尝试使用 Qt 访问 Pastebin 时连接超时
【发布时间】:2013-07-14 18:01:27
【问题描述】:

一系列失败的尝试使我尝试使用 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 网站上修复了一些东西……

【问题讨论】:

    标签: c++ qt http pastebin


    【解决方案1】:

    尝试this 示例,对任何 url 包括 pastebin 进行简单的下载操作。

    这是下载管理器的基本实现,但您应该能够根据需要对其进行精简。如果此实现也因相同的超时而失败,则可能是 pastebin url 或网络上的 pastebin 可访问性有问题。

    此外,在您的代码中,完成和错误信号的连接应在manager.get(request) 之前完成。

    希望对你有帮助。

    【讨论】:

    • 刚刚试过这个例子。遗憾的是,Pastebin 仍然超时。适用于其他网站。
    猜你喜欢
    • 2022-11-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多