Je dois créer une méthode POST dans WebApi pour pouvoir envoyer des données de l'application à la méthode WebApi. Je ne parviens pas à obtenir la valeur de l'en-tête.
Ici, j'ai ajouté des valeurs d'en-tête dans l'application:
using (var client = new WebClient())
{
// Set the header so it knows we are sending JSON.
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Headers.Add("Custom", "sample");
// Make the request
var response = client.UploadString(url, jsonObj);
}
En suivant la méthode de publication WebApi:
public string Postsam([FromBody]object jsonData)
{
HttpRequestMessage re = new HttpRequestMessage();
var headers = re.Headers;
if (headers.Contains("Custom"))
{
string token = headers.GetValues("Custom").First();
}
}
Quelle est la méthode correcte pour obtenir les valeurs d'en-tête?
Merci.
c#
asp.net-mvc
asp.net-mvc-4
c#-4.0
asp.net-web-api
AndrewRalon
la source
la source
string token = headers.GetValues("Custom").FirstOrDefault();
? Edit: Je viens de remarquer que vous correspondiez au style original de Qs.headers.GetValues("somethingNotFound")
lancers unInvalidOperationException
.beforeSend
dans JQuery ajax pour envoyer l'en-tête?beforeSend
et cela a fonctionné. Awesome :) +1Supposons que nous ayons un contrôleur API ProductsController: ApiController
Il y a une fonction Get qui renvoie une valeur et attend un en-tête d'entrée (par exemple. Nom d'utilisateur et mot de passe)
Nous pouvons maintenant envoyer la demande depuis la page en utilisant JQuery:
J'espère que cela aide quelqu'un ...
la source
Une autre façon d'utiliser une méthode TryGetValues.
la source
Pour .NET Core:
Ou
la source
Au cas où quelqu'un utilise ASP.NET Core pour la liaison de modèle,
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding
Il existe une prise en charge intégrée de la récupération des valeurs de l'en-tête à l'aide de l'attribut [FromHeader]
la source
Content-Type
n'est pas un identifiant C # valideessayez cette ligne de codes fonctionnant dans mon cas:
la source
Comme quelqu'un a déjà indiqué comment faire cela avec .Net Core, si votre en-tête contient un "-" ou un autre caractère interdit par .Net, vous pouvez faire quelque chose comme:
la source
Pour l'API WEB 2.0:
Je devais utiliser
Request.Content.Headers
au lieu deRequest.Headers
puis j'ai déclaré une extestion comme ci-dessous
Et puis je l'ai invoqué de cette façon.
J'espère que ça pourrait être utile
la source
Vous devez obtenir le HttpRequestMessage à partir du OperationContext actuel. En utilisant OperationContext, vous pouvez le faire comme ceci
la source
Pour .net Core dans la méthode GET, vous pouvez faire comme ceci:
la source