Особая проблема, с которой вы сталкиваетесь сейчас, это, вероятно, то, что клиент получает ноль и говорит: «Это не полный HTTP-ответ, и я ожидаю полного HTTP-ответа, поэтому должно поступить больше данных»,поэтому он ожидает больше данных
Поскольку клиент говорит только HTTP, а вы не отправляете HTTP клиенту в случае тайм-аута, почему вы ожидаете, что он будет работать?
Вы на самом деле неделать это даже в случае успеха!Вы подключили HTTP-декодер к исходящему соединению и передаете вывод декодированного клиенту.Но клиент ожидает, что raw HTTP.
Существует множество способов, которые могут вас укусить.Скажем, заголовки прокси-ответа указывают на чанкированное кодированиеВам нужно либо изменить эти заголовки, либо отправить данные клиенту с помощью chunked-кодировки, потому что ваш код для получения ответа прокси-сервера декодирует chunked-кодировку.Где код для этого?
Вам необходимо правильно обрабатывать постоянство HTTP-соединения.Вам необходимо определить, поддерживает ли клиент его и совместим ли с ним прокси-ответ, чтобы знать, как обрабатывать клиентское соединение после того, как вы проксируете ответ.Вы должны закрыть это?Если вы попытаетесь получить другой ответ по тому же соединению?Это зависит от нескольких факторов: где находится код, позволяющий принять правильное решение?
Есть и другие проблемы с вашим кодом.Вы должны посмотреть на код для существующих HTTP прокси и понять, как они работают.Существует большое количество проблем, которые вы должны решить, чтобы действительный HTTP-прокси работал, и вы не обратились к ним.
Существуют некоторые возможные хаки, которые могут заставить этот подход работать так, что вы можетебыть в состоянии выдать это, как сделано.Но если это важное приложение, которое должно быть надежным, это неправильный подход.HTTP прокси большие, сложные вещи.Этот код не один.
Посмотрите, как найти простейший код для работающего реального HTTP-прокси, который вы можете использовать.Прочитайте спецификацию HTTP и внимательно изучите требования к прокси.Это минное поле, и вы действительно должны начать с HTTP-прокси, который, как известно, работает, и изменять его по мере необходимости.