Подтвердить что ты не робот

Преобразовать в поток из 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;
}

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

4b9b3361

Ответ 1

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

Ответ 2

В итоге я сделал небольшую версию и вместо 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);
}

Ответ 3

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

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