HttpClientでBasic認証をする方法

投稿者: | 7月 22, 2015

System.NET.Http にある HttpClient を使って、Basic認証をする方法を調べました。
単純にする方法は検索すると、類似サンプルコードが複数でてくるのですが、
恰好良く見えないのです。
もっと綺麗な方法があるに違いないと思ったのですが、そんなことは無かったて話。

Basic認証をする方法(推奨)

var httpClient = new HttpClient();
var byteArray = Encoding.ASCII.GetBytes(string.Format("{0}:{1}", username, password));
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

Basic認証をする方法その2(非推奨)

var credential = new BasicCredentialsProvider();
credential.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
var auth = new BasicAuthCache();
auth.put(targetHost, new BasicScheme());
var context = HttpClientContext.create();
context.setCredentialsProvider(credential);
context.setAuthCache(auth);

エンコードとかのコードがなくなって、スマート(行数増えてるけど…)に見えなくもない。
でも、この方法の問題点は、
認証をするために、プリ認証、本認証と2回通信が発生してしまうこと。
認証は成功するんですけどね…。

参考

カテゴリー: C#

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください