首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取GetResponseStream()的最佳方法是什么?

读取GetResponseStream()的最佳方法是什么?
EN

Stack Overflow用户
提问于 2008-09-26 01:37:27
回答 6查看 75.9K关注 0票数 28

从GetResponseStream读取HTTP响应的最佳方式是什么?

目前,我正在使用以下方法。

代码语言:javascript
复制
Using SReader As StreamReader = New StreamReader(HttpRes.GetResponseStream)
   SourceCode = SReader.ReadToEnd()
End Using

我不太确定这是否是读取http响应的最有效的方法。

我需要字符串形式的输出,我已经看到一个具有不同方法的article,但我不太确定它是否是一个好的方法。在我的测试中,代码在不同的网站上有一些编码问题。

你如何阅读网络回复?

EN

回答 6

Stack Overflow用户

发布于 2008-09-26 01:43:46

我使用类似下面的代码从URL下载文件:

代码语言:javascript
复制
if (!Directory.Exists(localFolder))
{
    Directory.CreateDirectory(localFolder);   
}


try
{
    HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(Path.Combine(uri, filename));
    httpRequest.Method = "GET";

    // if the URI doesn't exist, an exception will be thrown here...
    using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse())
    {
        using (Stream responseStream = httpResponse.GetResponseStream())
        {
            using (FileStream localFileStream = 
                new FileStream(Path.Combine(localFolder, filename), FileMode.Create))
            {
                var buffer = new byte[4096];
                long totalBytesRead = 0;
                int bytesRead;

                while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    totalBytesRead += bytesRead;
                    localFileStream.Write(buffer, 0, bytesRead);
                }
            }
        }
    }
}
catch (Exception ex)
{
    // You might want to handle some specific errors : Just pass on up for now...
    // Remove this catch if you don't want to handle errors here.
    throw;
}
票数 18
EN

Stack Overflow用户

发布于 2010-06-01 01:48:33

我对字符串执行此操作的简单方法。请注意StreamReader构造函数上的true第二个参数。这告诉它从字节顺序标记中检测编码,并可能有助于解决您遇到的编码问题。

代码语言:javascript
复制
string target = string.Empty;
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=583");

HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
try
{
  StreamReader streamReader = new StreamReader(response.GetResponseStream(),true);                
  try
  {
    target = streamReader.ReadToEnd();
  }
  finally
  {
    streamReader.Close();
  }
}
finally
{
  response.Close();
}
票数 18
EN

Stack Overflow用户

发布于 2009-05-10 21:50:50

也许您可以研究一下WebClient类。下面是一个示例:

代码语言:javascript
复制
using System.Net;

namespace WebClientExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var remoteUri = "http://www.contoso.com/library/homepage/images/";
            var fileName = "ms-banner.gif";
            WebClient myWebClient = new WebClient();
            myWebClient.DownloadFile(remoteUri + fileName, fileName);
        }
    }
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/137285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档