headers c# asp.net http-headers dotnet-httpclient

headers - add header to post request c#



Encabezado personalizado para solicitud de cliente HTTP (4)

¿Cómo agrego un encabezado personalizado a una solicitud HttpClient ? Estoy usando el método PostAsJsonAsync para publicar el JSON. El encabezado personalizado que necesitaría agregar es

"X-Version: 1"

Esto es lo que he hecho hasta ahora:

using (var client = new HttpClient()) { client.BaseAddress = new Uri("https://api.clickatell.com/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "xxxxxxxxxxxxxxxxxxxx"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = client.PostAsJsonAsync("rest/message", svm).Result; }


Aquí hay una respuesta basada en eso de Anubis (que es un mejor enfoque ya que no modifica los encabezados para cada solicitud) pero que es más equivalente al código en la pregunta original:

using Newtonsoft.Json; ... var client = new HttpClient(); var httpRequestMessage = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri("https://api.clickatell.com/rest/message"), Headers = { { HttpRequestHeader.Authorization.ToString(), "Bearer xxxxxxxxxxxxxxxxxxxx" }, { HttpRequestHeader.Access.ToString(), "application/json" }, { "X-Version", "1" } }, Content = new StringContent(JsonConvert.SerializeObject(svm)) }; var response = client.SendAsync(httpRequestMessage).Result;


Hay una propiedad Headers en la clase HttpRequestMessage . Puede agregar encabezados personalizados allí, que se enviarán con cada solicitud HTTP. DefaultRequestHeaders en la clase HttpClient , por otro lado, establece los encabezados que se enviarán con cada solicitud enviada utilizando ese objeto de cliente, de ahí el nombre Encabezados de solicitud predeterminados .

Espero que esto aclare las cosas, al menos para alguien que vea esta respuesta en el futuro.


He encontrado la respuesta a mi pregunta.

client.DefaultRequestHeaders.Add("X-Version","1");

Eso debería agregar un encabezado personalizado a su solicitud


var request = new HttpRequestMessage { RequestUri = new Uri(EnvironmentSetup.BaseAddress + "Folder"), Method = HttpMethod.Post, Headers = { { "X-Version", "1" }, { HttpRequestHeader.Authorization.ToString(), "Basic " + EnvironmentSetup.GetAuthToken() }, { HttpRequestHeader.ContentType.ToString(), "multipart/mixed" }, }, Content = new MultipartContent { new ObjectContent<FolderWithDocuments>(new FolderWithDocuments { Status = FolderStatus.Draft, Users = new List<User> { EnvironmentSetup.User1, EnvironmentSetup.User2 }, }, new JsonMediaTypeFormatter(), "application/json"), new ByteArrayContent(ResourceHelper.ReadResourceToByteArray("blank.pdf")) { Headers = { { "Content-Type", "application/Executable" }, { "Content-Disposition", "form-data; filename=/"test.pdf/"" }, }, }, }, };