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