0

今日、Web サイトの HTML ステータス コードを取得する必要があります。ドメインに対して単純な get 要求を実行するだけで、応答の一部としてステータス コードを取得するだけでなく、サイトの index.html コンテンツも取得します。

pNetworkManager = new QNetworkAccessManager(this);
reply = pNetworkManager->get(request);
QVariant vStatusCodeV =  reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
    QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);


data=reply->readAll();

この最後の関数は、回避できる場合は避けたいのですが、ドメイン ステータス コードのみを取得する方法はありますか?

4

2 に答える 2

2

GET リクエストの代わりに HEAD リクエストを送信できますか?

これは Qt/クライアント固有のソリューションではありませんが、コンテンツは必要ないが、リクエストが通常生成するヘッダーだけを取得したい場合に、HTTP プロトコルで推奨されるアプローチです。ページが存在します。

これは、 head() メソッドを使用して QNetworkAccessManager で実行できると思います

于 2012-12-14T07:53:54.447 に答える
1

@shevronの回答に同意しますが、通信しているサイトがHEADリクエストを実装するのに十分なほど「賢く」ない場合でも、readAll()呼び出しを回避できます.

QByteArray line = reply->readLine();  //< eg "HTTP/1.0 200 OK"
QList<QByteArray> chunks = line.split(' ');
QString statusCode = chunks[1];

これにより、 のメモリ オーバーヘッドを回避できますreadAll()

于 2012-12-14T14:50:31.350 に答える