2010-05-11 12 views
6

Si tengo una respuesta HTTP pura como una cadena:Cómo analizar una respuesta HTTP sin formato como HttpListenerResponse?

HTTP/1.1 200 OK
Fecha: mar, 11 de Mayo 2010 07:28:30 GMT
Expira: -1
Cache-Control : private, max-age = 0
Tipo de contenido: text/html; charset = UTF-8
Servidor: gws
X-XSS-Protection: 1; mode = bloque
Connection: close

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

¿Hay una manera fácil puedo analizar en un objeto HttpListenerResponse? O al menos algún tipo de objeto .NET así que no tengo que trabajar con respuestas en bruto.

Lo que estoy haciendo actualmente es extraer los pares de clave/valor de encabezado y configurarlos en HttpListenerResponse. Pero algunos encabezados no se pueden configurar, y luego tengo que cortar el cuerpo de la respuesta y escribirla en OutputStream. Pero el cuerpo podría ser comprimido, o podría ser una imagen, que aún no puedo poner en práctica. Y algunas respuestas contienen caracteres aleatorios en todas partes, lo que parece un problema de codificación. Es un montón de problemas.

Recibo una respuesta cruda porque estoy usando SOCKS para enviar una solicitud HTTP. El programa en el que estoy trabajando es básicamente un proxy HTTP que puede enrutar solicitudes a través de un proxy SOCKS, como hace Privoxy.

Respuesta

1

Tal vez usted quiere echar un vistazo a la propiedad de la ResponseHeadersWebclient:

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)); 

por favor dígame si isnt que lo que estaban buscando.

+1

Hmm, simplemente vuelva a leer su pregunta, y creo que puede que no lo ayude si solo obtiene una respuesta cruda y tiene que desarrollar su respuesta a mano ... –

+0

Sí, actualmente estoy usando HttpListenerResponse.Headers.Set (clave, valor), que es lo mismo. Pero gracias por tu respuesta. – Edgar

Cuestiones relacionadas