2016-03-10 20 views
40

HttpClient isteğine nasıl özel bir başlık eklerim. Jsonu yayınlamak için PostAsJsonAsync yöntemini kullanıyorum. Ben eklenmesi gerekir olurdu özel başlık Bu şimdiye kadar yapmış budurHttpclient isteği için özel başlık

"X-Version: 1" 

geçerli: Soruma cevap bulduk

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

Olası yinelenen özel bir başlık eklemek gerekir

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

(http://stackoverflow.com/questions/12022965/adding-http-headers -to-httpclient) – Liam

+0

@Liam: Sorum, özel başlıkların nasıl eklenmesi gerektiğiydi. Diğer soru, başlıkların nasıl ekleneceğiydi. –

cevap

71

. [HttpClient ekleme Http Başlıkları] isteğinize arasında

+1

Pek çok kişi nasıl yapılacağını bilmiyorsa, HttpClient'in çok kötü bir API'ye sahip olduğu anlamına mı geliyor? Bence [Flurl] (http://tmenier.github.io/Flurl/) çok daha kolay. – Neshta

+2

Hayır, öyle değil. Bu cevap dikkatle izlenmelidir, çünkü varsayılanlar başlıkların her istekle birlikte gönderilmesini talep eder. İsteğinizi @Anubis'in önerdiği gibi oluşturmalısınız. HttpClient oluşturduğunuzda DefaultsRequestHeaders doldurulmalıdır. Benim için – Ruhrpottpatriot

+0

çalışmıyor –

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