Ich habe ein HttpClient
, die über mehrere Threads gemeinsam genutzt wird:Wie stellt Httpheader auf individuelle Anforderung mit Httpclient
public static class Connection
{
public static HttpClient Client { get; }
static Connection()
{
Client = new HttpClient
{
BaseAddress = new Uri(Config.APIUri)
};
Client.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
Client.DefaultRequestHeaders.Add("Keep-Alive", "timeout=600");
Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
}
Es einige Standard-Header hat ich auf jede Anforderung gestellt. Allerdings, wenn ich es verwenden, möchte ich für nur auf einem Header hinzufügen, die anfordern:
var client = Connection.Client;
StringContent httpContent = new StringContent(myQueueItem, Encoding.UTF8, "application/json");
httpContent.Headers.Add("Authorization", "Bearer " + accessToken); // <-- Header for this and only this request
HttpResponseMessage response = await client.PostAsync("/api/devices/data", httpContent);
response.EnsureSuccessStatusCode();
string json = await response.Content.ReadAsStringAsync();
Wenn ich das tue, erhalte ich die Ausnahme:
{ "Misused Header-Namen. Stellen Sie sicher, Request-Header mit HttpRequestMessage, Response-Header mit HttpResponseMessage und Inhalt Header mit HttpContent Objekten. "}
ich nicht finden konnten, andere Möglichkeit, Anforderungsheader zu dieser Anfrage hinzuzufügen. Wenn ich die DefaultRequestHeaders
auf Client
ändere, stoße ich auf Thread-Probleme und müsste alle Arten von verrückten Sperren implementieren.
Irgendwelche Ideen?
Awesome! Das funktioniert. Ich habe meiner Antwort auch meinen Arbeitscode hinzugefügt. '+ 1' –