2011-09-17 15 views
8

Estoy tratando de convertir una aplicación existente en una aplicación Metro UI en VS 11 Developer Preview. Esto significa correr contra el tiempo de ejecución de WinRT (corríjame si estoy equivocado). Esto se ejecuta en Windows 8 Developer Preview.¿Es posible modificar el User-Agent para una WinRT HttpWebRequest?

Necesito llamar a una API REST, que requiere que se establezca un usuario-agente específico. Esto no parece ser posible en WInRT. Tengo el siguiente código original:

_request = WebRequest.CreateHttp(url); 
_request.UserAgent = UserAgent; 

Pero la propiedad agente de usuario no está definido para HttpWebRequest. También probé:

_request.Headers["User-Agent"] = UserAgent; 

Esto resulta en una excepción de tiempo de ejecución: System.ArgumentException: Esta cabecera debe ser modificado mediante la propiedad o método apropiado.

¿Cómo puedo modificar el encabezado User-Agent?

Respuesta

17

Después de algunos retoques, he resuelto cómo hacerlo en WinRT. La API HttpWebRequest ha cambiado en esta versión para ser mucho más pobre que en el .NET Framework completo. Sin embargo, puedo enviar una solicitud con el nuevo HttpClient API, lo que permitirá que envíe la cabecera User-Agent:

var req = new HttpClient(handler) 
var message = new HttpRequestMessage(HttpMethod.Get, url); 
message.Headers.Add("User-Agent", "myCustomUserAgent"); 
var response = await req.SendAsync(message); 
+3

La versión de las bibliotecas .Net disponibles al escribir aplicaciones WinRT desde C# es más pobre que la completa, para eliminar la duplicación. Pero al escribir aplicaciones tradicionales, aún puede usar el marco completo. – svick

+2

Consulte la muestra de HttpClient - http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664 – RredCat

1

para notar que en Windows 10, es posible hacerlo exactamente como en el ejemplo en tu pregunta.

Cuestiones relacionadas