2016-03-10 18 views
40

Come si aggiunge un'intestazione personalizzata a una richiesta HttpClient. Sto usando il metodo PostAsJsonAsync per pubblicare il json. L'intestazione personalizzata che avrei bisogno di aggiungere èIntestazione personalizzata per richiesta Httpclient

"X-Version: 1" 

Questo è quello che ho fatto finora:

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; 
} 
+1

Eventuali duplicati di [Aggiunta di intestazioni HTTP per HttpClient] (http://stackoverflow.com/questions/12022965/adding-http-headers -to-httpclient) – Liam

+0

@Liam: La mia domanda era come aggiungere intestazioni personalizzate. Dove l'altra domanda era come aggiungere le intestazioni –

risposta

71

ho trovato la risposta alla mia domanda.

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

Questo dovrebbe aggiungere un header personalizzato alla vostra richiesta

+1

Se così tanta gente non sa come farlo, vuol dire che HttpClient ha un'API pessima? Penso che [Flurl] (http://tmenier.github.io/Flurl/) sia molto più facile. – Neshta

+2

No, non è così. Questa risposta deve essere visualizzata con cautela, poiché le intestazioni delle richieste di default vengono inviate con ogni richiesta. Dovresti compilare la tua richiesta come suggerito da @Anubis. DefaultsRequestHeaders dovrebbe essere popolato quando si crea HttpClient. – Ruhrpottpatriot

+0

per me non funziona –

11
var request = new HttpRequestMessage { 
    RequestUri = new Uri(EnvironmentSetup.BaseAddress + "Folder"), 
    Method = HttpMethod.Post, 
    Headers = { 
     { 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\"" }, 
      }, 
     }, 
    }, 
}; 
Problemi correlati