2010-05-22 5 views
6

¿Existe una clase C# o .NET para manejar la negociación de contenido HTTP con un agente de usuario?¿Existe una clase C# o .NET para manejar la negociación de contenido HTTP?

Me gustaría poder proporcionar una lista de tipos de contenido aceptables, y los he negociado con el navegador para encontrar la mejor coincidencia.

+0

No entiendo su pregunta. ¿Puedes elaborar? –

+0

http://en.wikipedia.org/wiki/Content_negotiation La negociación de contenido es parte de la especificación HTTP que permite a un agente de usuario (navegador) enumerar los tipos de medios que aceptará un documento en orden de "calidad". Por lo tanto, en mi código me gustaría pasar los formatos que puedo generar y hacer que la clase aplique las reglas de Negociación de contenido como se define en la Especificación y devolverme el mejor tipo de medio para enviar de vuelta. – Jamie

+0

Si mi aplicación puede representar datos en HTML, XHTML, XML, PDF o JSON. Necesito saber qué navegador es compatible, y específicamente cuál considera la mejor calidad. – Jamie

Respuesta

0

Creo que el agente de usuario de palabra está un poco desajustado en su pregunta, pero si desea compilar, solicite una determinada fuente (digamos una api restfull). Puede utilizar el kit de WCF Resto de arranque (http://wcf.codeplex.com/) para especificar el tipo de contenido que desee o aceptar:

HttpClient client = new HttpClient(new Uri("http://restfull/api/")); 
//this is XML but could be JSON or whatever the API can supply 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); 
var response = client.Get(path); 

if (response != null) 
{ 
    response.EnsureSuccessStatusCode(); 
    //this will be XML 
    string xml = response.Content.ReadAsString(); 
} 
+0

Este es el código del lado del cliente, el OP está preguntando por el código del lado del servidor. Además, la negociación de contenido en WCF actualmente no funciona: http://wcf.codeplex.com/workitem/40 –

Cuestiones relacionadas