0
これは認証ヘッダーだけだったときにこれが機能しました。しかし今、私はカスタムヘッダーを追加する必要があった。 "HEADER OUT OF RANGE"と表示されているtokenResponseにエラーが発生しました。HttpClientに2つのヘッダーを追加する
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...
}
は、これらの変更を行ったが、まだ範囲外のヘッダを取得使用して
Request
形成すべきです、新しいUri(postURL)); request.Headers.Add( "X-iMem-Date"、日付); request.Headers.Add( "Authorization"、auth); request.Content = content; response.Content.ReadAsStringAsync(); var response = httpclient.SendAsync(request)を待機します。 –は、サーバーが予期している形式で、日付形式の文字列が正しくフォーマットされていますか? –
も 'DateTime.Now'ではなく' DateTime.UtcNow'を使用します –