Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用QNetworkAccessManager.com的网站出现问题_C++_Qt - Fatal编程技术网

C++ 使用QNetworkAccessManager.com的网站出现问题

C++ 使用QNetworkAccessManager.com的网站出现问题,c++,qt,C++,Qt,我正在尝试使用QNetworkAccessManager从Investment.com自动读取一些信息。我可以阅读其他网站,但这个网站提供了一些我想访问的站长工具。 我使用这个在浏览器中工作的查询。 这是我的申请代码 class InvestingAPI: public QObject { Q_OBJECT public: InvestingAPI(); QueryTechnicals(QString Symbol, int TF1Minites)

我正在尝试使用QNetworkAccessManager从Investment.com自动读取一些信息。我可以阅读其他网站,但这个网站提供了一些我想访问的站长工具。

我使用这个在浏览器中工作的查询。 这是我的申请代码

class InvestingAPI: public QObject
{
    Q_OBJECT

    public:
       InvestingAPI();
       QueryTechnicals(QString Symbol, int TF1Minites);

    signals:
    //   void NewTechnicalSummary(int Timeframe, QString Symbol, QString Summary);
    private slots:
       void onData(QNetworkReply *reply);
    private:
      QNetworkAccessManager qnam ;

};

InvestingAPI::InvestingAPI()
{
连接(&qnam,信号(完成(QNetworkReply*)),此,插槽(onData(QNetworkReply*))

连接(&qnam,信号(加密(QNetworkReply*)),此,插槽(onData(QNetworkReply*)) ))

我有一件事

void InvestingAPI::onData(QNetworkReply *reply){
    // find data type
    // decode and return data to caller
    if(reply->error() != QNetworkReply::NoError){
        qDebug() << "Error";
        qDebug() << reply->errorString();
    }
    QString  html =  QString::fromUtf8(reply->readAll());
    qDebug() << html;
    QString SubData;
}
void InvestingAPI::onData(QNetworkReply*reply){
//查找数据类型
//解码并将数据返回给调用者
如果(回复->错误()!=QNetworkReply::无错误){
qDebug()readAll());

qDebug()默认情况下,Qt Network不会像其他工具一样处理重定向,因此您会得到一个空数据(如果您检查“位置”标题,您将看到重定向的url)。在这种情况下,它将启用重定向:

Request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);

您是否使用网络监视器检查了浏览器的响应?可能您的浏览器进行了重定向或发送了一些标题或Cookie。第一步是与Postman一起复制该行为。我尝试过,谢谢,它似乎返回了我希望在我的程序中得到的确切结果,这是一个HTML页面。没有Cookie您进行过比较使用网络监视器(如Wireshark)的请求和响应?谢谢你的好主意。我尝试了此修复,但现在错误连接已关闭。不确定为什么我在以下重定向属性中没有收到该错误。@TrumpFan我已经测试过,但没有出现该错误,你能提供一个。你在哪里声明了“qnam”?谢谢你可能是对的,问题出在其他地方。也感谢你对它进行测试。我通过wireshark部分获得此消息:92010 705.488428 185.94.85.243 192.168.1.23 ICMP 82目标不可访问(主机管理禁止)。我正在windows上运行,并检查了防火墙设置,该设置允许我的程序执行所有操作。此外,在wireshark上,它似乎正在还原为我添加到请求中的http:request.setSslConfiguration(QSslConfiguration::defaultConfiguration());但它仍然只是http。@嗯,我在linux中使用ssl,因此我以本机方式处理https,稍后我将在中进行分析windows@TrumpFan请避免在评论中添加代码,因为它们看起来很可怕,而应编辑您的问题
Request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);