Je crée une classe api conroller dans VB. J'ai une fonction très simple en elle:Test API Post en passant une classe <Frombody()> - Toujours NULL
Public Function Post(<FromBody()> ByVal value As String) As String
Return value
End Function
Lorsque j'envoie une requête POST de HTTP outil (extension FireFox), je peux le voir aller dans la fonction, mais value
est toujours vide.
J'ai dans mon WebApiConfig.vb
:
config.Routes.MapHttpRoute(
name:="Names",
routeTemplate:="{controller}/{id}",
defaults:=New With {.id = RouteParameter.Optional}
Et ceci dans Global.ASAX.vb
sous Application-Start()
:
RouteTable.Routes.MapHttpRoute(name:="Post", routeTemplate:="post", defaults:=New With {.symbol = RouteParameter.Optional, .controller = "Names"})
J'ai essayé de Fiddler 4 aussi bien, mais je reçois:
{"Message": "La requête contient une entité b ody mais pas Content-Type header. Le type de média inféré 'application/octet-stream' n'est pas pris en charge pour cette ressource. "," ExceptionMessage ":" No MediaTypeFormatter est disponible pour lire un objet de type 'String' du contenu avec le type de média 'application/octet-stream '. "," ExceptionType ":" System.Net.Http.UnsupportedMediaTypeException "," StackTrace ":" à System.Net.Http.HttpContentExtensions.ReadAsAsync [T] (HttpContent contenu, Type de type, IEnumerable " 1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken) \ r \ n à System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync (HttpRequestMessage demande, type de type 1 de formatage IEnumerable », IFormatterLogger formatterLogger, CancellationToken cancellationToken) "}
Ou lorsque je tente de définir le type de contenu dans l'en-tête que je reçois:
Pas MediaTypeFormatter est disponible pour lire un objet de type « String » de contenu avec type de média ...
< Où est le type de média que j'ai défini.
Comment effectuer ce simple test POST?
C'est probablement une réponse assez décente à la question. Cependant, je suis allé un chemin différent et ne peut pas vraiment justifier le temps de re-tester cela avec la réponse fournie. J'espère que quelqu'un d'autre trouve cela utile. – Jeroen