How to connect via API?
-
hi
I wonder if it also wants libssl32.dll ? -
hey @Mikeeeeee,
You can try those .dll. I used it few weeks ago when I needed Qt SSL on Windows and it worked fine.
-
Thanks. https is working.
Trying to use the function TIME_SERIES_DAILY_ADJUSTED.
https://www.alphavantage.co/documentation/
If you do so it works:request.setUrl(QUrl("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&outputsize=compact&apikey=XXXXXXXXXXXXX"));
If doing so does not work:
request.setUrl(QUrl("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&outputsize=full&apikey=XXXXXXXXXXXXXXX"));
It's me doing something wrong or the server is not working?
[edit: removed API key SGaist]
-
Since you don't show how you are processing the QNetworkReply object created for your request one can only guess. What signals did you connect from the reply object ? What exactly do you mean by "does not work" ?
By the way, I've edited out your api key, it's not a good idea to post such information.
-
It's my h-file:
private slots: void on_testButton_clicked(); void testSlotFromQDebug(); void onReply(QNetworkReply* reply); private: Ui::MainWindow *ui; QNetworkAccessManager *apiQuery = new QNetworkAccessManager;
it's cpp-file:```
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);//connect(apiQuery, &QNetworkAccessManager::finished, this, &MainWindow::testSlotFromQDebug);
}
MainWindow::~MainWindow()
{
delete ui;
}void MainWindow::on_testButton_clicked()
{
QNetworkRequest request;
//request.setUrl(QUrl("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo"));
request.setUrl(QUrl("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&outputsize=full&apikey=111111"));
//request.setUrl(QUrl("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&outputsize=compact&apikey=1111"));QNetworkReply* reply = apiQuery->get(request); connect(reply ,&QNetworkReply::finished,this,std::bind(&MainWindow::onReply,this,reply ));
}
void MainWindow::testSlotFromQDebug()
{
//qDebug()<<"point1";
}void MainWindow::onReply(QNetworkReply* reply){
QJsonDocument jdoc = QJsonDocument::fromJson(reply->readAll());
//qDebug() << QSslSocket::supportsSsl();
//qDebug() << QSslSocket::sslLibraryBuildVersionString();
//qDebug() << QSslSocket::sslLibraryVersionString();
qDebug()<<jdoc;
// do something with the jdoc
} -
Again: what do you mean by "it's not working" when using the full output size ?
-
What about connecting the errors related signals ? That might give you some clues about what is happening.
-
Maybe QNetworkReply::error ?
-
Did you also check QNetworkReply::sslErrors ?
-
@Mikeeeeee said in How to connect via API?:
But it's a signal
Yes, and you can connect a slot to a signal...
"And what should be placed instead of const QList<QSslError> &errors?" - ?
Nothing, you implement a slot with same parameter and connect it to the signal as usual:void MyClass::handleSslErrors(const QList<QSslError> &errors) { ... }
-
The server seems to works too, because when you click on the link https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&outputsize=full&apikey=demo open the file. Maybe this is due to the fact that the file is large?
-
I tested your query on macOS and it worked fine. What exact version of Windows are you using ?
-
@Mikeeeeee Do you think "Yes, I use Windows" is a useful answer to "What exact version of Windows are you using?"?!
We already know that you're using Windows, the question was which exact version?...
Why can't you give exact answers and ask questions which can actually be understood?