Eu preciso criar um método POST em WebApi para que possa enviar dados do aplicativo para o método WebApi. Não consigo obter o valor do cabeçalho.
Aqui, adicionei valores de cabeçalho no aplicativo:
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);
}
Seguindo o método de postagem 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();
}
}
Qual é o método correto para obter valores de cabeçalho?
Obrigado.
c#
asp.net-mvc
asp.net-mvc-4
c#-4.0
asp.net-web-api
AndrewRalon
fonte
fonte
string token = headers.GetValues("Custom").FirstOrDefault();
? Edit: Apenas notei que você combinava com o estilo original do Qs.headers.GetValues("somethingNotFound")
lances umInvalidOperationException
.beforeSend
no JQuery ajax para enviar o cabeçalho?beforeSend
e funcionou. Incrível :) +1Suponha que temos um controlador de API ProductsController: ApiController
Há uma função Get que retorna algum valor e espera algum cabeçalho de entrada (por exemplo, Nome de usuário e senha)
Agora podemos enviar a solicitação da página usando JQuery:
Espero que isso ajude alguém ...
fonte
Outra forma de usar o método TryGetValues.
fonte
Para .NET Core:
Ou
fonte
Caso alguém esteja usando ASP.NET Core para associação de modelo,
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding
Há suporte integrado para recuperar valores do cabeçalho usando o atributo [FromHeader]
fonte
Content-Type
não é um identificador C # válidotente estas linhas de códigos que funcionam no meu caso:
fonte
Como alguém já indicou como fazer isso com .Net Core, se seu cabeçalho contém um "-" ou algum outro caractere que não permite .Net, você pode fazer algo como:
fonte
Para WEB API 2.0:
Eu tive que usar em
Request.Content.Headers
vez deRequest.Headers
e então declarei uma extensão conforme abaixo
E então eu invoquei dessa forma.
Espero que possa ser útil
fonte
Você precisa obter o HttpRequestMessage do OperationContext atual. Usando OperationContext você pode fazer assim
fonte
Para .net Core no método GET, você pode fazer assim:
fonte