Erreur lors de l'envoi de json dans le POST de l'API web service
Je suis de la création d'un service web à l'aide de l'API Web. J'ai mis en place une classe simple
public class ActivityResult
{
public String code;
public int indexValue;
public int primaryCodeReference;
}
Et puis j'ai mis en œuvre à l'intérieur de mon contrôleur
[HttpPost]
public HttpResponseMessage Post(ActivityResult ar)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
Mais quand j'ai appeler l'API de passage en POST le fichier json:
{"code":"XXX-542","indexValue":"3","primaryCodeReference":"7"}
- Je obtenir le message d'erreur suivant:
{
"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)"
}
Ce que je fais mal?
- Vous devez ajouter un en-tête de "application/json" pour la charge utile, pour être acceptées par le client.
- J'ai bien placé les en-têtes dans ma requête HTTP. Cependant, le problème semble être côté serveur: dropbox.com/s/xlidnnybs8v6d0u/Cattura.JPG
- On dirait que vous êtes seulement la
Accept
en-tête deapplication/json
. Vous devez également définir laContent-Type
en-tête deapplication/json
.
Vous devez vous connecter pour publier un commentaire.
Dans la requête HTTP, vous devez définir le Type de Contenu pour:
Content-Type: application/json
Donc, si vous êtes à l'aide de fiddler client ajouter
Content-Type: application/json
à la tête de la demandeune autre astuce...où ajouter le "content-type: application/json"...à la zone de texte du champ sur le Compositeur/Analysé onglet. Il y a 3 lignes déjà là, donc j'ai ajouté ce type de Contenu comme la 4ème ligne. Que fait le Poste de travail.
Content-Type:application/json
Lorsque vous définissez un POST de la méthode de requête paramètre d'entrée qui doivent être annotées comme
[FromBody]
, par exemple:Tout JSON données d'entrée doivent être raw de données.
Veuillez vérifier si vous avez été en passant de la méthode d'
POST
plutôt queGET
.si oui, vous obtiendrez la même erreur que vous posté ci-dessus.
J'ai eu tous mes paramètres abordés dans la accepté de répondre.
Le problème que j'avais était que j'étais en train de mettre à jour le Cadre de l'Entité une entité de type "Tâche" comme:
Ce qui a fonctionné pour moi était de créer ma propre entité "DTOTask" comme:
Il besoin pour inclure
Content-Type:application/json
dans l'api web de demande section d'en-tête lorsque aucune mention de contenu par défaut il estContent-Type:text/plain
passe à la demande.Meilleure façon de tester l'api sur le facteur de l'outil.