a wandering wolf

Does a wandering wolf dreams of a wondering, sometimes programming sheep?

このエントリーをはてなブックマークに追加

認証付きプロキシ経由で WebClient を使う

.NET 系の言語で System.Net.WebClient を使ってゴニョゴニョすること、よくあるかと思います。

namespace WebClientSample
{
    class Program
    {
        static void Main(string[] args)
        {
            using(var wc = new System.Net.WebClient())
            {
                var result = wc.DownloadString("http://example.com/");
            }
        }
    }
}

多くの場合はこれで指定した URL からデータを取得できるんですが、場合によってはうまくいきません。例えば、私の業務環境では認証付きプロキシ経由でインターネットに接続する必要があり、上記のコードを社内で実行すると HTTP コード 407 が返ってきてしまいます。

こういう時に System.Net.WebProxySystem.Net.NetworkCredential を使います。

namespace WebClientSample
{
    class Program
    {
        static void Main(string[] args)
        {
            using(var wc = new System.Net.WebClient())
            {
                // プロキシサーバの URL とポートを指定する
                var proxy = new System.Net.WebProxy("http://example.org:8080/");
                // 認証用のユーザ名とパスワードを設定する
                proxy.Credentials = new System.Net.NetworkCredential("user", "pass");
                wc.Proxy = proxy;
                var result = wc.DownloadString("http://example.com/");
            }
        }
    }
}

楽しい!!✌(‘ω’✌ )三✌(‘ω’)✌三( ✌’ω’)✌