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;
}
私は正しい軌道に乗っていますか?
そこでStreamReaderを作成する必要はありません。ただreturn aResponse.GetResponseStream();
です。そのメソッドの呼び出し元は、完了時にストリームでDispose
を呼び出す必要もあります。
私はより小さなバージョンを実行し、古い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);
}
これが私のアプローチであり、エラー処理はあなた次第です;-)
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;
}