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