#author("2020-01-11T23:03:44+09:00","","")
#navi(../)
* HttpClientを使って指定したURLのページを取得する [#d4ea9020]
HttpClientを使って、指定したURLのレスポンスを取得するサンプルコードになります。~
サンプルソースは、C# と Visual Basic(VB)を公開しています。~
Task<TResult>による、戻り値を呼び出しもとで取得するサンプルとなっています。

#htmlinsert(windev-top.html)
#contents

* 関連サイト [#oe62e662]
-[[Microsoft | .NET HttpClient クラス>https://docs.microsoft.com/ja-jp/dotnet/api/system.net.http.httpclient]]
-[[Microsoft | .NET HttpResponseMessage クラス>https://docs.microsoft.com/ja-jp/dotnet/api/system.net.http.httpresponsemessage]]
-[[Microsoft | .NET Task クラス>https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.task]]
-[[Microsoft | .NET Task<TResult>.Result プロパティ>https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.task-1.result]]

* HttpClientを使った指定URLのレスポンスを取得するサンプル [#qec6ca2c]
以下に、C#,Visual Basic(VB)のサンプルコードを記します。

** C# [#zba70161]
  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) [#ib970018]
 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

** 実行結果 [#dc33975f]
上記サンプルコードの実行時のキャプチャです。
#ref(01.png)
#br

* 動作説明 [#xa5ab3ce]
サンプルソースの動作概略を以下に記します。~
尚、C#ではクラスとなっているため、自身をnewしています。~
- HtmlContentメソッドは、HttpClientが非同期のため Task<TResult>として記述してます。~
- Task<string>で返却された値をTask<TResult>.Resultプロパティでレスポンスを取得しています。~
- EnsureSuccessStatusCode()を使ってHTTP応答が失敗した場合、例外をスローさています。

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

#htmlinsert(windev-btm.html)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS