Если у меня есть необработанный ответ 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 делает.
Похоже, нет простого способа конвертировать их. Помогли эти статьи:
Как реализовать пользовательский прокси-сервер?
http://www.jeffcrossman.com/2009/08/27/using-httplistener-to-build-a-proxy
В итоге я сделал что-то очень похожее.
Возможно, вы хотите взглянуть на свойство 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));
Пожалуйста, скажите мне, если это не то, что вы искали.