C# HttpClientで画像を取得する
HttpClientクラスを使って画像を取得しStreamで返す関数です。
private async Task<Stream> Get_httpAsync() { string _u = "http:画像のURL"; Stream _ms = null; using (HttpClient client = new HttpClient()) { var _id = "ベーシック認証のID"; var _pass = "ベーシック認証のパス"; var _au = new System.Net.Http.Headers.AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", _id, _pass)))); client.DefaultRequestHeaders.Authorization = _au; try { var _resp = client.GetAsync(_u); Task.WaitAny(_resp); var _hoge = await _resp; _ms = await _hoge.Content.ReadAsStreamAsync(); } catch (Exception e) { Console.WriteLine(e.Message); } } return _ms; }
Stream型で画像データが取得できます。
新規aspxから作成したGet_httpAsync()関数をコールする
protected void Page_Load(object sender, EventArgs e) { Task<Stream> _ss = Get_httpAsync(); Task.WaitAll(_ss); byte[] _hogehoge = new byte[_ss.Result.Length]; _ss.Result.Read(_hogehoge, 0, (int)_ss.Result.Length); Response.Clear(); Response.ContentType = "image/jpeg"; Response.OutputStream.Write(_hogehoge, 0, (int)_ss.Result.Length); Response.End(); }