2009-08-03 14 views
18

Bir url'den System.IO.Stream nesnesine okumaya çalışıyorum. BenBir url'den System.IO.Stream nesnesine okumak mümkün mü?

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

kullanmaya çalıştı ama URI biçimleri FileStream nesnelerle desteklenmeyen bir hata alıyorum. Bir URL'den okuyabilecek olan System.IO.Stream öğesinden bu mirası kullanabileceğim bir yöntem var mı?

cevap

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

Yanlış değilse req nesnesi WebRequest olmalıdır, HttpWebRequest nesnesi değil .. –

+0

Bu kodu kullanarak, web isteğinin diğer ucundaki içeriği kaldırmayı başaramadım. Mükemmel çalıştığı için Thomas Levesque'in cevabını aşağıda tavsiye ediyorum. –

31

Kullanım WebClient.OpenRead:

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

Ah, OpenRead'in olduğunu bilmiyordum. Bunu hatırlayacağım. –

+1

Ben de bilmiyordum ... Bu tür bir şey olduğunu tahmin ettim ve MSDN kütüphanesinde kontrol ettim;) –

+0

Tabii ki en basit yol ... Akışın kapanmasını ve web istemcisinin elden çıkarılmasını göstermek için kod ekle, ve bu sadece mükemmel. :) – Guffa

2

Evet, bir yanıt akışı almak için bir HttpWebRequest nesnesi kullanabilirsiniz:

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

(the docs'dan çıkarılmış ve basitleştirilmiş).

İlgili konular