Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9687

C#でHEAD HTTPリクエストを送信する

$
0
0

GETメソッドの前にHEADメソッドを使うことで、画像や動画のような大きなデータのやりとりを抑制できます。

まえがき

URLからデータをダウンロードするとき、サーバーの負荷等を考えてデータが新しい場合だけダウンロードしたいことがあります。HTTPプロトコルではHEADメソッドのリクエストに対するレスポンスヘッダーが日付やETagといった情報を持ち、これらを利用して前述の目的を達成できます。

これらの情報はGETメソッドのリクエストに対するレスポンスヘッダーにも含まれますが、GETメソッドはデータそのものを取得するのでサーバーの負荷等は軽減できません。

C#における実装

C#ではSystem.Net.Http名前空間のHttpClientクラスを使用してURLにHEADメソッドのリクエストを送信できます。以下にサンプルコードを示します。

usingSystem;usingSystem.Net.Http;namespaceConsoleApp1{classProgram{// HttpClientのインスタンスは再利用すべきです。// https://docs.microsoft.com/ja-jp/dotnet/api/system.net.http.httpclient?view=netcore-3.1#remarksprivatestaticreadonlyHttpClienthttpClient=newHttpClient();staticvoidMain(){// HTTPリクエストを送信するURL// ここではQiitaのURLをお借りしています。varurl="https://qiita.com/";// URLに対するHTTP HEADリクエストメッセージを作成して送信// ここではResultを呼び出して同期処理にしています。varheadMessage=newHttpRequestMessage(HttpMethod.Head,url);varresponse=httpClient.SendAsync(headMessage).Result;// ETagを出力する// nullの可能性があります。varheaders=response.Headers;Console.WriteLine($"ETag:{headers.ETag?.Tag}");}}}

参考

HTTPヘッダーやETagについてはMDNを参照ください。


Viewing all articles
Browse latest Browse all 9687

Trending Articles