QTcpSocketによるHTTP通信の方法

QTではQStcSocketを使うことで簡単にGETPOSTを使ってHTTP通信できるようになっています。

例えばあるホストに接続してGETメソッドを要求したいなら次のようにします。

QTcpSocket socket;
QUrl url("http://xxx.net/index.html")
QString hostName = "xxx.net";
socket.connectToHost(hostName, 80);
    ///ホストに接続
socket.write("GET " +
        url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority) +
        " HTTP/1.1\r\nHost: " + hostName.toUtf8() + "\r\n\r\n");
    ///GET要求
socket.waitForReadyRead(10000);
    ///タイムアウト時間は10秒
QString data = QString(socket.readAll());
qDebug() << data;
socket.close();

この例では"host.net"というホストの/index.htmlというファイルをGET要求しています。

もし要求がうまくいけば、次のような形式のデータを取得できます。

HTTP/1.1 200 OK
Date: Sat, 18 Oct 2014 10:53:38 GMT
Server: Apache
Last-Modified: Sat, 18 Oct 2014 03:47:31 GMT
ETag: "18900109-bf-505aa57501ac0"
Accept-Ranges: bytes
Content-Length: 191
Content-Type: text/plain

ファイル本文...

ファイル本体の内容(テキスト文章や画像のデータ)はヘッダの後に改行を2つ挟んだ後から配置されています。

関連項目
プライバシーポリシー