Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9743

RestSharpを使ってDigest認証を試してみた

$
0
0

背景

Windowsアプリ開発の中でHTTPクライアント周りを調べていたのですが、標準ではHttpClientクラスが用意されています。
HttpClient クラス (System.Net.Http) | Microsoft Docs

が、このクラスが結構曲者らしいのです。(実際使ったことがないのでわかりませんが)
Qiitaで調べてみても結構出てきて、これは使いたくないな、、と正直思いました。

HttpClientをusingで囲わないでください - Qiita
.NET(Framework)のHttpClientの取り扱いには要注意という話 - Qiita

さらに調べたところ、RestSharpというREST APIクライアントライブラリがあることを知り、割と良さそうだと思ったので、Digest認証で試してみることにしました。

導入方法

NuGetパッケージを追加する必要があります。IDEまたはコマンドラインを使用して実行できます。
NuGet Gallery | RestSharp 106.11.4

また、Digest認証をやる場合は以下も追加します。
NuGet Gallery | RestSharp.Authenticators.Digest 1.0.2

使い方

以下のようにusing文で宣言しておきます。

using RestSharp;
using RestSharp.Authenticators;
using RestSharp.Authenticators.Digest;

GET

例えばAPIがGETメソッドで、レスポンスとして以下のJSONデータを返してくるものとします。

{"foo":"bar","baz":{"foo":"bar","baz":"qux"}}

まず、JSONデータを受け取るためのデータクラスを作成します。

Foo.cs
publicclassFoo{publicstringfoo{get;set;}publicBazbaz{get;set;}}
Baz.cs
publicclassBaz{publicstringfoo{get;set;}publicstringbaz{get;set;}}

そして、以下のようにリクエスト&レスポンスからJSONデータをデシリアライズします。

varclient=newRestClient("https://hogehoge.api/1.1/foobaz");// Digest認証の設定client.Authenticator=newDigestAuthenticator("username","password");// JSONシリアライザーの設定(今回はUtf8Jsonを使用)client.UseUtf8Json();varrequest=newRestRequest();varresponse=client.Get(request);// 同期呼び出し// JSONデータをデシリアライズvarresult=newUtf8JsonSerializer().Deserialize<Foo>(response);

大まかにはRestClientクラスのインスタンスを生成し、認証方式やJSONシリアライザーの設定をして、RestRequestクラスのインスタンスをclient.Getメソッドの引数に渡すことでできます。
そして、変数responseに結果が入っているので、あとはJSONデータをデシリアライズします。

POST

また後ほど記載します。

参考URL


Viewing all articles
Browse latest Browse all 9743

Trending Articles