背景
Web上からJsonデータを取得してあれこれしたいと思い、HttpClientを使った際の学んだことを記録。
環境
・Visual studio 2019
・.NET Framwork 4.8
内容
WebからJsonデータを取得すにはHTTP経由で取得する。
HTTPを使用する場合、誰が(client)を記載する必要がある。
特定の人が決まっていなくても、枠だけでも用意する必要がある。
▼ユーザー認証がいらない場合
Webでアクセスした際に、ユーザーとパスワードを聞かれない場合この方式で大丈夫。
using System.Net.Http
HttpClient client = new HttpClient();//枠だけのclient
var request = new HttpRequestMessage(HttpMethod.Get, url);//注文書(リクエスト文)の作成
var result = client.SendAsync(request)//”誰が”(client)が”注文書”(リクエスト文)をもとにHTTPからとってくる。
▼ユーザー認証が必要な場合
Webでアクセスした際に、ユーザーとパスワードを聞かれる場合はclientにIDとPasswordを持たせる必要がある。
using System.Net.Http
using System.Net
//ユーザー認証の処理
var clientInfo = new HttpClientHandler();
clientInfo.Credentials = new NetworkCredential(LoginID, Password);
HttpClient client = new HttpClient(clientInfo);
//下記一緒
var request = new HttpRequestMessage(HttpMethod.Get, url);//注文書(リクエスト文)の作成
var result = client.SendAsync(request)//”誰が”(client)が”注文書”(リクエスト文)をもとにHTTPからとってくる。
▼認証をスキップする
証明書エラーなどで認証をスキップしたいときにこちらを追記すると良い。
using System.Net.Http
using System.Net
//証明書エラー認証スキップ
var httpClientHandler = new HttpClientHandler();
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, sslPlicyErrors) => true;
//ユーザー認証の処理
var clientInfo = new HttpClientHandler();
clientInfo.Credentials = new NetworkCredential(LoginID, Password);
HttpClient client = new HttpClient(clientInfo);
//下記一緒
var request = new HttpRequestMessage(HttpMethod.Get, url);//注文書(リクエスト文)の作成
var result = client.SendAsync(request)//”誰が”(client)が”注文書”(リクエスト文)をもとにHTTPからとってくる。