2009-08-03 44 views
18

我正在嘗試從URL讀取到System.IO.Stream對象。我試圖使用是否可以從URL讀取到System.IO.Stream對象?

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

但我得到一個錯誤,URI格式不支持FileStream對象。是否有一些方法可以使用從System.IO.Stream繼承,它可以從URL中讀取?

回答

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對象。 – 2011-09-29 15:17:45

+0

使用此代碼我無法反序列化Web請求另一端的內容。我建議在下面使用Thomas Levesque的回答,因爲它的工作很完美。 – 2014-04-14 14:56:20

31

使用WebClient.OpenRead

Using wc As New WebClient() 
    Using stream As Stream = wc.OpenRead(msgURL) 
     ... 
    End Using 
End Using 
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剝離並簡化)。