Как проанализировать необработанный ответ HTTP как HttpListenerResponse?

Если у меня есть необработанный ответ HTTP как строка:

HTTP/1.1 200 ХОРОШО
Дата: вторник, 11 мая 2010 7:28:30 GMT
Истекает:-1
Управление кэша: частный, max-age=0
Тип контента: текст/HTML; charset=UTF-8
Сервер: gws
X-XSS-Protection: 1; mode=block
Соединение:закрыть

<!doctype html><html>...</html>

Есть ли простой способ, которым я могу проанализировать его в HttpListenerResponse объект? Или по крайней мере некоторая добрая.NET возражает, таким образом, я не должен работать с необработанными ответами.

Что я делаю, в настоящее время извлекает пары ключ/значение заголовка и устанавливает их на HttpListenerResponse. Но некоторые заголовки не могут быть установлены, и затем я должен отключить орган по ответу и записать это в OutputStream. Но тело могло быть gzipped, или это могло быть изображение, которое я еще не могу взяться за работу. И некоторые ответы содержат случайные символы везде, который похож на проблему кодирования. Это - большая проблема.

Я получаю необработанный ответ, потому что я использую SOCKS для отправки Запроса HTTP. Программой я продолжаю работать, является в основном Прокси HTTP, который может направить запросы через прокси SOCKS, как Privoxy делает.

6
задан Edgar 8 November 2013 в 16:24
поделиться

2 ответа

Похоже, нет простого способа конвертировать их. Помогли эти статьи:

Как реализовать пользовательский прокси-сервер?

http://www.jeffcrossman.com/2009/08/27/using-httplistener-to-build-a-proxy

В итоге я сделал что-то очень похожее.

2
ответ дан 17 December 2019 в 18:11
поделиться

Возможно, вы хотите взглянуть на свойство ResponseHeaders Webclient:

WebClient wc = new WebClient();
wc.DownloadStringAsync(new Uri("http://www.foo.com"));

WebHeaderCollection myWebHeaderCollection = myWebClient.ResponseHeaders;

for (int i=0; i < myWebHeaderCollection.Count; i++)             
    Console.WriteLine ("\t" + myWebHeaderCollection.GetKey(i) + 
                       " = " + myWebHeaderCollection.Get(i));

Пожалуйста, скажите мне, если это не то, что вы искали.

1
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: