web-dev-qa-db-ja.com

URLからストリームに変換

UrlをStreamに変換しようとしましたが、自分が正しいかどうかはわかりません。

protected Stream GetStream(String gazouUrl)
{
    Stream rtn = null;
    HttpWebRequest aRequest = (HttpWebRequest)WebRequest.Create(gazouUrl);
    HttpWebResponse aResponse = (HttpWebResponse)aRequest.GetResponse();

    using (StreamReader sReader = new StreamReader(aResponse.GetResponseStream(), System.Text.Encoding.Default))
    {
        rtn = sReader.BaseStream;
    }
    return rtn;
}

私は正しい軌道に乗っていますか?

25
Hoque

そこでStreamReaderを作成する必要はありません。ただreturn aResponse.GetResponseStream();です。そのメソッドの呼び出し元は、完了時にストリームでDisposeを呼び出す必要もあります。

15
Quartermeister

私はより小さなバージョンを実行し、古いHttp Requestコードの代わりにWebClientを使用することになりました。

private static Stream GetStreamFromUrl(string url)
{
    byte[] imageData = null;

    using (var wc = new System.Net.WebClient())
        imageData = wc.DownloadData(url);

    return new MemoryStream(imageData);
}
35
balexandre

これが私のアプローチであり、エラー処理はあなた次第です;-)

private MemoryStream GetStreamFromUrl(string url)
{
    byte[] imageData = null;
    MemoryStream ms;

    ms = null;

    try
    {
        using (var wc = new System.Net.WebClient())
        {
            imageData = wc.DownloadData(url);
        }
        ms = new MemoryStream(imageData);
    }
    catch (Exception ex)
    {
        //forbidden, proxy issues, file not found (404) etc
    }

    return ms;
}