#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)