J'essayais de convertir une URL en Stream mais je ne sais pas si j'ai raison ou tort.
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;
}
Suis-je sur la bonne voie?
Vous n'avez pas besoin de créer un StreamReader ici. Juste return aResponse.GetResponseStream();
. L'appelant de cette méthode devra également appeler Dispose
sur le flux à la fin de l'opération.
J'ai fini par faire une version plus petite et utiliser WebClient
à la place de l'ancien code de requête 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);
}
Voici mon approche, avec gestion des erreurs jusqu'à vous ;-)
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 ;
}