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/"" },
},
},
},
};