【问题标题】:How do I use C# and ASP.net to proxy a WebRequest?如何使用 C# 和 ASP.net 代理 WebRequest?
【发布时间】:2010-05-07 18:20:29
【问题描述】:

差不多...我想做这样的事情:

Stream Answer = WebResp.GetResponseStream();
Response.OutputStream = Answer;

这可能吗?

【问题讨论】:

  • 您是否尝试代理网络请求?

标签: c# .net webrequest


【解决方案1】:

不,但您当然可以同步或异步复制数据。

  • 分配一个缓冲区(大小为 4kb 左右)
  • 进行读取,如果已到达流的末尾,则返回读取的字节数或 0
  • 如果接收到数据,则写入读取的数量并循环读取

像这样:

using (Stream answer = webResp.GetResponseStream()) {
    byte[] buffer = new byte[4096];
    for (int read = answer.Read(buffer, 0, buffer.Length); read > 0; read = answer.Read(buffer, 0, buffer.Length)) {
        Response.OutputStream.Write(buffer, 0, read);
    }
}

【讨论】:

    【解决方案2】:

    This answer 有一个方法 CopyStream 在流之间复制数据(并且还指出了在 .NET 4 中执行此操作的内置方法)。

    你可以这样做:

    using (stream answer = WebResp.GetResponseStream())
    {
        CopyStream(answer, Response.OutputStream); 
        Response.Flush();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多