27 votes

L'API Web: Contenu dans HttpResponseMessage

Dans un de mes requête Get, je veux retourner un HttpResponseMessage avec un peu de contenu. Actuellement je travail comme suit:

var header = new MediaTypeHeaderValue("text/xml");
Request.CreateResponse(HttpStatusCode.OK, myObject, header);

Cependant, depuis que je suis à l'aide de la statique de la Demande, cela devient vraiment difficile à tester. De ce que j'ai lu, je devrais être capable de faire ce qui suit:

return new HttpResponseMessage<T>(objectInstance);

Cependant, semblent ne pas être en mesure de le faire. Est-ce parce que je suis en utilisant une ancienne version de WebApi / .NET?


Sur une note de côté, j'ai trouvé que vous pourrait potentiellement créer une réponse comme suit:

var response = new HttpResponseMessage();
response.Content = new ObjectContent(typeof(T), objectInstance, mediaTypeFormatter);

Ce qui me laisse perplexe est pourquoi, dois-je ajouter un mediaTypeFormatter ici. J'ai ajouté le type de média formateur à l'échelle mondiale.asax niveau.

Merci!

50voto

Filip W Points 13343

HttpResponseMessage<T> a été retiré après la Bêta. Maintenant, au lieu d'un tapé HttpResponseMessage nous avons tapé ObjectContent

Si vous créez manuellement HttpResponseMessage à l'aide de son constructeur sans paramètre par défaut, il n'y a pas de contexte de demande disponible pour effectuer la négociation de contenu - c'est pourquoi vous devez spécifier le formatage, ou d'effectuer la négociation de contenu à la main.

Je comprends que vous ne voulez pas le faire - donc l'utiliser à la place:

HttpResponseMessage response = Request.CreateResponse<MyObject>(HttpStatusCode.OK, objInstance);

Créer le message de réponse en s'appuyant sur la négociation de contenu est effectuée par rapport à la demande.

Enfin, vous pouvez en savoir plus sur la négociation de contenu ici Sur ce lien

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X