.NET Framework HttpClientクラスを利用し、shift-jisのレスポンスを受け取る

.NET Frameworkでは、インターネットにアクセスするためのクラスが数多く用意されています。

  • WebRequest
  • HttpWebRequest
  • WebClient
  • HttpClient

前者の3つは古くからあるものですが、最後のHttpClientクラスは .NET 4.5から利用できる新しいクラスです。ネットでURLにアクセスする方法を調べると、その多くは前者について語られています。新しいHttpClientは他のものと利用方法が若干異なり、完全な形でソースコードを公開しているサイトが少ないため、初めて利用する方は戸惑ってしまうでしょう。今回はその利用方法を紹介したいと思います。またPOSTでリクエストする方法や、レスポンスの文字コードがshift-jisであった場合の対応方法についても併せて紹介します。

HttpClientの利用方法

GETによるリクエスト

HttpClientの名前空間は System.Net.Http です。このimportを忘れないようにしましょう。URLにGETでアクセスするときは、GetStringAsyncメソッドの実行だけでコンテンツ(ボディ)を取得することができます。非常にシンプルですね。

POSTによるリクエスト

次はPOSTでアクセスしてみます。この場合、PostAsyncメソッドを利用します。そして取得したContentに対してReadAsStringAsyncメソッドを実行することにより、コンテンツ(ボディ)を取得することができます。上記のHttpAccessAsyncメソッドを次のように修正して下さい。

文字コードがshift-jisのレスポンス

上記のReadAsStringAsyncメソッドでコンテンツを取得できるのは、文字コードがUTF-8の場合のみです。もしShift-JISの文字コードが利用されていた場合、取得時にエラーになってしまいます。そのため、StreamReaderクラスを用い適した文字コードで読み込む必要があります。下記は、文字コードをshift-jisとした例です。上記のHttpAccessAsyncメソッドを次のように修正して下さい。

まとめ

HttpClientクラスは後発だけあって、シンプルに記述することができますが、文字コードなど一筋縄でいかないこともあります。個人的には、このHttpClientクラスが利用しやすいので、これで統一されることを望んでいます。

» お仕事のご依頼はこちら