2012-09-28 6 views
8

Soy nuevo en la API web y necesito crear un servidor para un cliente. No tengo control sobre el cliente, no puedo cambiar nada.Uso de C# web api con contenido alternativo tipo

El cliente envía una solicitud json encapsulada en html en un cuerpo POST. Sin embargo, el tipo de contenido puede variar. ¿Qué debo hacer para permitir que mi ApiController procese diferentes tipos de contenido?

Respuesta

8

Bajo el capó, Api web es compatible con contenido mecanismo de negociación optar automáticamente el formateador correcto basado en la cabecera Content-Type de solicitud HTTP.

Por defecto, la negociación de contenido admite tres formateadores: json, xml y form-urlencoded data. Si no se encuentra el formateador, el cliente recibirá el error HTTP 406 (No aceptable).

Ver más:

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/content-negotiation

Si necesita permitir el soporte Web API otra Content-Type, puede escribir su propio formateador personalizado:

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/media-formatters

+1

Gracias. Terminé usando esto: pública HttpResponseMessage Post (HttpRequestMessage r) {} Esto me permitió obtener acceso al código XML sin que viene en el que entonces podría analizar. Estoy seguro de que no es la manera "correcta", pero funciona para mí – user789235