2016-03-10 8 views
40

Wie füge ich einen benutzerdefinierten Header zu einer HttpClient-Anforderung hinzu. Ich verwende PostAsJsonAsync-Methode, um den JSON zu veröffentlichen. Die benutzerdefinierten Header, die ich brauchen würde hinzugefügt werden sollBenutzerdefinierter Header zu Httpclient-Anforderung

"X-Version: 1" 

Dies ist, was ich bisher getan haben:

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

Mögliche Duplikat [Hinzufügen von HTTP-Header zu Httpclient] (http://stackoverflow.com/questions/12022965/adding-http-headers -to-httpclient) – Liam

+0

@Liam: Meine Frage war, wie man benutzerdefinierte Header hinzufügt. Wo die andere Frage war, wie man Header hinzufügt –

Antwort

71

ich die Antwort auf meine Frage gefunden zu haben.

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

, die einen benutzerdefinierten Header auf Ihre Anfrage hinzufügen sollte

+1

Wenn so viele Leute nicht wissen, wie es geht, bedeutet es, dass HttpClient eine sehr schlechte API hat? Ich denke [Flurl] (http://tmenier.github.io/Flurl/) ist viel einfacher. – Neshta

+2

Nein, tut es nicht. Diese Antwort sollte mit Vorsicht betrachtet werden, da die Header der Standardanforderungen mit jeder Anfrage gesendet werden. Sie sollten Ihre Anfrage wie von @Anubis vorgeschlagen erstellen. DefaultsRequestHeaders sollten beim Erstellen des HttpClient ausgefüllt werden. – Ruhrpottpatriot

+0

für mich funktioniert es nicht –

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