2009-08-03 13 views
18

URLからSystem.IO.Streamオブジェクトに読み込もうとしています。私は使用しようとしましたURLからSystem.IO.Streamオブジェクトに読み込むことはできますか?

Dim stream as Stream = New FileStream(msgURL, FileMode.Open) 

しかし、URI形式がFileStreamオブジェクトでサポートされていないというエラーが発生します。 URLから読み込むことができるSystem.IO.Streamから継承する、私が使用できるいくつかのメソッドがありますか?

答えて

18

VB.Net:

Using req As WebRequest = HttpWebRequest.Create("url here"), _ 
     stream As Stream = req.GetResponse().GetResponseStream() 

End Using 

のC#:

using(WebRequest req = HttpWebRequest.Create("url here")) 
using (Stream stream = req.GetResponse().GetResponseStream()) 
{ 

} 
+4

もし私が間違っていないなら、オブジェクトはWebRequest、HttpWebRequestオブジェクトではないはずです。 –

+0

このコードを使って、Webリクエストの反対側のコンテンツを逆シリアル化できませんでした。以下のThomas Levesqueの答えを使用することをお勧めします。 –

31

使用WebClient.OpenRead

Using wc As New WebClient() 
    Using stream As Stream = wc.OpenRead(msgURL) 
     ... 
    End Using 
End Using 
+1

ああ、私はOpenReadが存在するかどうかわかりませんでした。私はそれを覚えています。 –

+1

私はどちらも知らなかった...私はちょうどそのようなものを推測し、MSDNライブラリでチェックした); –

+0

もちろん最も簡単な方法...ストリームのクローズとウェブクライアントの廃棄を示すコードを追加するそれはちょうど完璧です。 :) – Guffa

2

はい、あなたは応答ストリームを取得するためには、HttpWebRequestオブジェクトを使用することができます。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
Stream receiveStream = response.GetResponseStream(); 
// read the stream 
receiveStream.Close(); 
response.Close(); 

(剥奪され、the docsから簡素化されています)。

関連する問題