Necesito crear un método POST en WebApi para poder enviar datos desde la aplicación al método WebApi. No puedo obtener el valor del encabezado.
Aquí he agregado valores de encabezado en la aplicación:
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);
}
Siguiendo el método de publicación de 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();
}
}
¿Cuál es el método correcto para obtener valores de encabezado?
Gracias.
c#
asp.net-mvc
asp.net-mvc-4
c#-4.0
asp.net-web-api
AndrewRalon
fuente
fuente
string token = headers.GetValues("Custom").FirstOrDefault();
? Editar: Acabo de notar que coincidías con el estilo Qs original.headers.GetValues("somethingNotFound")
lanza unInvalidOperationException
.beforeSend
en JQuery ajax para enviar el encabezado?beforeSend
y funcionó. Impresionante :) +1Supongamos que tenemos un controlador de API ProductsController: ApiController
Hay una función Obtener que devuelve algún valor y espera algún encabezado de entrada (por ejemplo, nombre de usuario y contraseña)
Ahora podemos enviar la solicitud desde la página usando JQuery:
Espero que esto ayude a alguien ...
fuente
Otra forma de usar el método TryGetValues.
fuente
Para .NET Core:
O
fuente
En caso de que alguien esté usando ASP.NET Core para el enlace de modelos,
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding
Hay soporte integrado para recuperar valores del encabezado usando el atributo [FromHeader]
fuente
Content-Type
no es un identificador válido de C #prueba esta línea de códigos que funcionan en mi caso:
fuente
Como alguien ya señaló cómo hacer esto con .Net Core, si su encabezado contiene un "-" o algún otro carácter que .Net no permite, puede hacer algo como:
fuente
Para WEB API 2.0:
Tuve que usar en
Request.Content.Headers
lugar deRequest.Headers
y luego declaré una extensión como se muestra a continuación
Y luego lo invoqué de esta manera.
Espero que pueda ser de ayuda
fuente
Necesita obtener el HttpRequestMessage del OperationContext actual. Usando OperationContext puedes hacerlo así
fuente
Para .net Core en el método GET, puede hacer lo siguiente:
fuente