У меня это работало, когда это был только заголовок авторизации. Но теперь мне нужно добавить пользовательский заголовок. Я получаю сообщение об ошибке tokenResponse, в которой говорится: «HEADER OUT OF RANGE».добавление двух заголовков в HttpClient
Вот конечная информация:
URI: https://api.xyzcompany.com/api/v10/proxyUserToken
METHOD: POST
Params: email
Required headers: X-iMem-Date, Authorization
Мой код.
//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...
}
Сделаны эти изменения, но до сих пор получить заголовок из диапазона: запроса переменных = новый HttpRequestMessage (HttpMethod.Post , новый Uri (postURL)); request.Headers.Add («X-iMem-Date», дата); request.Headers.Add («Авторизация», auth); request.Content = content; response.Content.ReadAsStringAsync(); var response = await httpclient.SendAsync (запрос); –
Ваша строка даты отформатирована правильно, в формате, который ожидает сервер? –
также использовать 'DateTime.UtcNow' вместо' DateTime.Now' –