Estoy creando un servicio web usando API web. Implementé una clase simple
public class ActivityResult
{
public String code;
public int indexValue;
public int primaryCodeReference;
}
Y luego lo he implementado dentro de mi controlador
[HttpPost]
public HttpResponseMessage Post(ActivityResult ar)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
Pero cuando llamo a la API pasando POST el archivo json:
{"code":"XXX-542","indexValue":"3","primaryCodeReference":"7"}
Recibo el siguiente mensaje de error:
{
"Message": "The request entity's media type 'text/plain' is not supported for this resource.",
"ExceptionMessage": "No MediaTypeFormatter is available to read an object of type 'ActivityResult' from content with media type 'text/plain'.",
"ExceptionType": "System.Net.Http.UnsupportedMediaTypeException",
"StackTrace": " in System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n in System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n in System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"
}
¿Qué estoy haciendo mal?

Acceptencabezado enapplication/json. También necesita establecer elContent-Typeencabezado enapplication/json.Respuestas:
En la solicitud HTTP, debe establecer Content-Type en:
Content-Type: application/jsonEntonces, si está utilizando el cliente Fiddler, agregue
Content-Type: application/jsonal encabezado de la solicitudfuente
Content-Type:application/jsonCuando define cualquier parámetro de entrada de método de solicitud POST que debe anotarse como
[FromBody], por ejemplo :Todos los datos de entrada JSON deben ser datos sin procesar .
fuente
otro consejo ... dónde agregar "content-type: application / json" ... al campo de cuadro de texto en la pestaña Composer / Parsed. Ya hay 3 líneas completadas allí, así que agregué este tipo de contenido como la cuarta línea. Eso hizo que el Post funcionara.
fuente
Verifique si estaba pasando el método como en su
POSTlugar comoGET. si es así, obtendrá el mismo error que publicó anteriormente.fuente
Tenía todas mis configuraciones cubiertas en la respuesta aceptada. El problema que tuve fue que estaba tratando de actualizar el tipo de entidad de Entity Framework "Tarea" como:
Lo que funcionó para mí fue crear mi propia entidad "DTOTask" como:
fuente
Requiere incluir
Content-Type:application/jsonen la sección de encabezado de solicitud de la API web cuando no se menciona ningún contenido, luego, de forma predeterminada, seContent-Type:text/plainpasa a la solicitud.La mejor manera de probar la API en la herramienta Postman.
fuente