1

一連の試行が失敗したため、Qt 5.1 を使用して、 Pastebin Web サイトのメイン ページへの単純な 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

また、彼らのウェブサイトから 10 分間 IP 禁止されることもわかりました (VPN の場所を変更しない限り、ブラウザを使用してウェブサイトにアクセスできません)。

Pythonで同じリクエストを試してみましたが、うまくいきました。

ここで何が問題ですか?問題は Qt または Pastebin から発生していますか?

編集 :

Qt 4.8.5で試しました。同じ結果が得られました。

編集2:

ほぼ 2 か月後に同じバージョンのフレームワークを試してみたところ、現在は機能しています。彼らはパスビンのウェブサイトで何かを修正したと思います...

4

1 に答える 1

0

ペーストビンを含む任意の URL で簡単なダウンロード操作を行うには、この例を試してください。

これはダウンロード マネージャーの基本的な実装ですが、必要に応じて削除できるはずです。この実装も同じタイムアウトで失敗する場合は、pastebin url またはネットワーク経由の pastebin アクセスに問題がある可能性があります。

さらに、コードでは、終了信号とエラー信号の接続は の前に行う必要がありますmanager.get(request)

お役に立てば幸いです。

于 2013-07-14T20:27:59.407 に答える