Ich hatte dies funktioniert, wenn es nur die Autorisierung Header war. Aber jetzt musste ich einen benutzerdefinierten Header hinzufügen. Ich erhalte einen Fehler in der TokenResponse, die sagt "HEADER OUT OF RANGE".Hinzufügen von zwei Header zu HttpClient
Hier ist der Endpunkt Informationen:
URI: https://api.xyzcompany.com/api/v10/proxyUserToken
METHOD: POST
Params: email
Required headers: X-iMem-Date, Authorization
My-Code.
//get current date and time
DateTime dt = DateTime.Now;
string date = string.Format("{0:ddd}, {0: dd MMM yyyy HH:mm:ss} GMT", dt);
//hash together for header
string strToHash = secret + date + "[email protected]";
string hash = SHA.Generate256string(strToHash);
//setup the values we need to post
var values2 = new Dictionary<string, string>();
values2.Add("email", "[email protected]");
var content2 = new FormUrlEncodedContent(values2);
//setup the auth header
string auth = string.Format("IMEM {0}:{1}", token, hash);
//setup client and add the headers
HttpClient client2 = new HttpClient();
client2.BaseAddress = new Uri(postURL);
client2.DefaultRequestHeaders.Add("X-iMem-Date", date);
client2.DefaultRequestHeaders.Add("Authorization", auth);
//post and get responses
HttpResponseMessage response2 = await client2.PostAsync(new Uri(postURL), content2);
var tokenresponse = await response2.Content.ReadAsStringAsync();
if (response2.IsSuccessStatusCode)
{
...do stuff...
}
Hergestellt diese Änderungen mit, aber immer noch Kopf außer Reichweite erhalten: var request = new HttpRequestMessage (HttpMethod.Post , neuer Uri (postURL)); request.Headers.Add ("X-iMem-Datum", Datum); request.Headers.Add ("Authorization", auth); request.Content = Inhalt; Antwort.Content.ReadAsStringAsync(); var Antwort = erwarten httpclient.SendAsync (Anfrage); –
ist Ihre Datumszeichenfolge richtig formatiert, in dem Format, das der Server erwartet? –
verwenden Sie auch 'DateTime.UtcNow' anstelle von' DateTime.Now' –