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?
Accept
encabezado enapplication/json
. También necesita establecer elContent-Type
encabezado enapplication/json
.Respuestas:
En la solicitud HTTP, debe establecer Content-Type en:
Content-Type: application/json
Entonces, si está utilizando el cliente Fiddler, agregue
Content-Type: application/json
al encabezado de la solicitudfuente
Content-Type:application/json
Cuando 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
POST
lugar 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/json
en 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/plain
pasa a la solicitud.La mejor manera de probar la API en la herramienta Postman.
fuente