2009-08-03 65 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剥离并简化)。