【问题标题】:Is it possible to read from a url into a System.IO.Stream object?是否可以从 url 读取到 System.IO.Stream 对象?
【发布时间】:2010-11-16 10:28:14
【问题描述】:

我正在尝试从 url 读取到 System.IO.Stream 对象。我尝试使用

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

但我收到一个错误,即 FileStream 对象不支持 URI 格式。有没有我可以使用的从 System.IO.Stream 继承的可以从 URL 读取的方法?

【问题讨论】:

    标签: .net vb.net io iostream


    【解决方案1】:

    使用WebClient.OpenRead

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

    【讨论】:

    • 啊,我不知道 OpenRead 存在。我会记住那个的。
    • 我也不知道...我只是猜测存在类似的东西,并在 MSDN 库中检查了;)
    • 当然是最简单的方法了...添加代码来显示流的关闭和Web客户端的处理,它就是完美的。 :)
    【解决方案2】:

    VB.Net:

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

    C#:

    var req = System.Net.WebRequest.Create("url here");
    using (Stream stream = req.GetResponse().GetResponseStream())
    {
    
    }
    

    【讨论】:

    • 使用此代码我无法反序列化 Web 请求另一端的内容。我建议在下面使用 Thomas Levesque 的答案,因为它效果很好。
    【解决方案3】:

    是的,您可以使用 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 剥离和简化)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 2014-04-07
      • 2012-10-09
      相关资源
      最近更新 更多