代码之家  ›  专栏  ›  技术社区  ›  David Murdoch

如何使用C和ASP.NET代理Web请求?

  •  2
  • David Murdoch  · 技术社区  · 15 年前

    差不多…我想这样做:

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

    这可能吗?

    2 回复  |  直到 13 年前
        1
  •  5
  •   Lucero    15 年前

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

    • 分配缓冲区(大小约为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
  •  3
  •   Community CDub    8 年前

    This answer 有办法 CopyStream 在流之间复制数据(并指示在.net 4中使用的内置方式)。

    你可以这样做:

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