URLが存在するか調べる方法
URLがネットワーク上に存在するかどうかを調べるには実際にURLに接続してそのメッセージに「200 OK」が含まれていれば存在していることが分かります。
プロジェクトファイルの設定
URLを確かめるにはネットワークモジュールを追加する必要があります。
なのでプロジェクトファイル(.pro)のQTにnetworkを追加すればネットワーク関係が使えるようにします。
QT += core\
gui\
network
プロジェクトファイルの設定はこれだけです。
URLが存在するか調べる
URLへの接続してメッセージを受け取るのにはQTcpSocketを使い、受信したメッセージに「200 OK」が含まれていればURLが存在することになります。
そこでURLが存在する場合だけtrueを返す関数を作ってみました。
bool fileExist(const QUrl & url) { QTcpSocket socket; socket.connectToHost(url.host(), 80); ///80番ポートに接続 if(socket.waitForConnected()){ socket.write("HEAD " + url.path().toUtf8() + " HTTP/1.1\r\n" "Host: " + url.host().toUtf8() + "\r\n\r\n"); if(socket.waitForReadyRead()) { QByteArray bytes = socket.readAll(); if (bytes.contains("200 OK")) return true; } } return false; }
使い方は簡単で例えば次のようにURLを渡してください。
if(fileExist(QUrl("https://www.google.co.jp/"))){ ///URLが存在する }else{ ///存在しない }
© Kaz