2016-09-23 7 views
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... 
      } 

答えて

0

あなたがDefaultRequestHeadersを使用して、カスタムヘッダーを追加しようとすると、それはあなたがカスタムそれが失敗しているされて持っているものから、よく知られたヘッダに対して検証しようとします。 VAR要求=新しいHttpRequestMessage(HttpMethod.Post:
あなたはHttpRequestMessage
https://msdn.microsoft.com/en-us/library/system.net.http.headers.httprequestheaders(v=vs.118).aspx

var request = new HttpRequestMessage(HttpMethod.Post, new Uri(requestUrl)); 
request.Headers.Add("Your-Custom-Header", "Value"); 
request.Content = "{your request content}" 

、その後

var response = await httpClient.SendAsync(request); 
+0

は、これらの変更を行ったが、まだ範囲外のヘッダを取得使用して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)を待機します。 –

+0

は、サーバーが予期している形式で、日付形式の文字列が正しくフォーマットされていますか? –

+0

も ​​'DateTime.Now'ではなく' DateTime.UtcNow'を使用します –

関連する問題