Преобразовать в поток с URL - PullRequest
23 голосов
/ 24 июня 2010

Я пытался преобразовать URL в поток, но я не уверен, прав я или нет.

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;
}

Я на правильном пути?

Ответы [ 3 ]

29 голосов
/ 27 сентября 2013

В итоге я сделал меньшую версию и использовал WebClient вместо старого кода Http-запроса:

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

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

    return new MemoryStream(imageData);
}
15 голосов
/ 24 июня 2010

Вам не нужно создавать StreamReader там. Просто return aResponse.GetResponseStream();. Вызывающий этот метод также должен будет вызвать Dispose в потоке, когда это будет сделано.

0 голосов
/ 23 июня 2018

Вот мой подход с обработкой ошибок до вас; -)

    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 ;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...