[Qt-users:663] Re: Qt5でmastodonのRestAPIを呼び出しJSONを取得する方法について

Naoki Matsumoto nekomatu @ gmail.com
2017年 4月 26日 (水) 19:08:50 JST


こんにちは、MLへようこそです。

宮本さんに必要なクラスはQNetworkAccessManagerかと思われます。
http://doc.qt.io/qt-5/qnetworkaccessmanager.html

コードで利用されているQTcpSocketはもっとプリミティブなプログラミングが必要なときに利用するものです。


2017年4月26日 18:58 宮本雄樹 <yumiya0403two @ gmail.com>:
> 初めまして、宮本雄樹と申します。
> TeratailにてQtに関する質問をしたところ、
> メーリングリストで質問してはどうかとアドバイスされた次第です。
> このようなメーリングリストを使うのは初めてなので勝手が良く分かりませんが、
> 今後ともよろしくお願いいたします。
>
> さて、本題なのですが、私は今Qt5で簡易的なmastodonクライアントを作ろうと思っています。
> そこでmastodonのRestAPIを呼び出すコードを以下のように書いたのですが、
> 実行すると次のような結果が返ってきます。
> リダイレクトがうまくできていないようなのですが、ヘッダーに移動先のURLもありません。
> httpsなのでSSL関連を疑っているのですが、
> Qtでhttpsをうまく処理することは可能なのでしょうか?
> 一通り調べたところQtはSSLに対応しておらず外部ライブラリを使うようなことが書いてあったのですが、
> その通りなのでしょうか?
>
> Qtは最近始めたばかりで右も左も分からない状況です。
> アドバイス頂けないでしょうか?
>
> [コード]
> #include "mainwindow.h"
>
> #include "ui_mainwindow.h"
>
>
> #include <QTcpSocket>
>
> #include <QUrl>
>
>
> MainWindow::MainWindow(QWidget *parent) :
>
>     QMainWindow(parent),
>
>     ui(new Ui::MainWindow)
>
> {
>
>     ui->setupUi(this);
>
>
>     QTcpSocket socket;
>
>     QUrl url("https://mstdn.jp/api/v1/timelines/public");
>
>     QString hostName = "mstdn.jp";
>
>     socket.connectToHost(hostName, 80);
>
>     socket.write("GET " + url.toEncoded(QUrl::RemoveScheme |
> QUrl::RemoveAuthority) + " HTTP/1.1\r\nHost: " + hostName.toUtf8() +
> "\r\n\r\n");
>
>     socket.waitForReadyRead(1000000);
>
>     QString data = QString(socket.readAll());
>
>     ui->textEdit->setText(data);
>
>     socket.close();
>
> }
>
>
> MainWindow::~MainWindow()
>
> {
>
>     delete ui;
>
> }
>
>
> [結果]
> HTTP/1.1 301 Moved Permanently
>
> Date: Wed, 26 Apr 2017 09:53:29 GMT
>
> Content-Type: text/html
>
> Transfer-Encoding: chunked
>
> Connection: keep-alive
>
> Set-Cookie: __cfduid=d876325d0b88d8b09e238204d873fdc201493200409;
> expires=Thu, 26-Apr-18 09:53:29 GMT; path=/; domain=.mstdn.jp; HttpOnly
>
> Location: https://mstdn.jp/api/v1/timelines/public
>
> Server: cloudflare-nginx
>
> CF-RAY: 3558a7bef61c133b-NRT
>
>
> b2
>
> <html>
>
> <head><title>301 Moved Permanently</title></head>
>
> <body bgcolor="white">
>
> <center><h1>301 Moved Permanently</h1></center>
>
> <hr><center>nginx</center>
>
> </body>
>
> </html>
>
>
> 0
>
>
> _______________________________________________
> Qt-users mailing list
> Qt-users @ qt-users.jp
> http://qt-users.jp/mailman/listinfo/qt-users
>


Qt-users メーリングリストの案内