Как использовать C # и ASP.net для прокси веб-запроса? - PullRequest
2 голосов
/ 07 мая 2010

в значительной степени ... я хочу сделать что-то вроде этого:

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

Возможно ли это?

Ответы [ 2 ]

5 голосов
/ 07 мая 2010

Нет, но вы, конечно, можете копировать данные, синхронно или асинхронно.

  • Выделить буфер (размером примерно 4 КБ или около того)
  • Выполнить чтение, котороелибо вернет количество прочитанных байтов, либо 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);
    }
}
3 голосов
/ 07 мая 2010

Этот ответ имеет метод CopyStream для копирования данных между потоками (а также указывает встроенный способ сделать это в .NET 4).

Вы можете сделать что-то вроде:

using (stream answer = WebResp.GetResponseStream())
{
    CopyStream(answer, Response.OutputStream); 
    Response.Flush();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...