QTcpSocketによるHTTP通信の方法
QTではQStcSocketを使うことで簡単にGETやPOSTを使って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つ挟んだ後から配置されています。
© Kaz