こんにちは、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