このエントリーをはてなブックマークに追加


HttpClientを使って指定したURLのページを取得する

HttpClientを使って、指定したURLのレスポンスを取得するサンプルコードになります。
サンプルソースは、C# と Visual Basic(VB)を公開しています。
Task<TResult>による、戻り値を呼び出しもとで取得するサンプルとなっています。

関連サイト

HttpClientを使った指定URLのレスポンスを取得するサンプル

以下に、C#,Visual Basic(VB)のサンプルコードを記します。

C#

 using System;
 using System.Net.Http;
 using System.Threading.Tasks;
 
 class Program
 {
     static void Main(string[] args)
     {
         string[] urls = { @"https://just4fun.biz/me.html", @"https://windev.just4fun.biz/me.html" };
 
         Program app = new Program();
 
         HttpClient client = new HttpClient();
 
         foreach (string url in urls)
         {
             string content = (app.HtmlContent(url, client)).Result;
             Console.WriteLine("URL:{0}, Content:{1}", url, content);
         }
     }
 
     async Task<string> HtmlContent(string url,HttpClient clinet)
     {
         HttpResponseMessage response = null;
         Console.WriteLine("Connect {0}...", url);
         try
         {
             response = await clinet.GetAsync(url);
             response.EnsureSuccessStatusCode();
             string responseBody = await response.Content.ReadAsStringAsync();
             return await response.Content.ReadAsStringAsync();
         }
         catch (Exception ex)
         {
             Console.WriteLine("Exception Message :{0} ", ex.Message);
         }
         return null;
     }
 }
 

Visual Basic(VB)

Imports System.Net.Http

Module Program

    Sub Main(args As String())
        Dim urls As String() = {"https://just4fun.biz/me.html", "https://windev.just4fun.biz/me.html"}
        Dim client As HttpClient = New HttpClient()

        For Each url As String In urls
            Dim content As String = (HtmlContent(url, client)).Result
            Console.WriteLine("URL:{0}, Content:{1}", url, content)
        Next
    End Sub

    Private Async Function HtmlContent(ByVal url As String, ByVal clinet As HttpClient) As Task(Of String)
        Dim response As HttpResponseMessage = Nothing
        Console.WriteLine("Connect {0}...", url)

        Try
            response = Await clinet.GetAsync(url)
            response.EnsureSuccessStatusCode()
            Dim responseBody As String = Await response.Content.ReadAsStringAsync()
            Return Await response.Content.ReadAsStringAsync()
        Catch ex As Exception
            Console.WriteLine("Exception Message :{0} ", ex.Message)
        End Try

        Return Nothing
    End Function

End Module

実行結果

上記サンプルコードの実行時のキャプチャです。

01.png
 

動作説明

サンプルソースの動作概略を以下に記します。
尚、C#ではクラスとなっているため、自身をnewしています。

  • HtmlContentメソッドは、HttpClientが非同期のため Task<TResult>として記述してます。
  • Task<string>で返却された値をTask<TResult>.Resultプロパティでレスポンスを取得しています。
  • EnsureSuccessStatusCode()を使ってHTTP応答が失敗した場合、例外をスローさています。

以上、HttpClientを使った指定URLのレスポンスを取得するサンプルソースでした。


添付ファイル: file01.png 263件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-01-11 (土) 23:05:04