基本的なHTTP認証が必要なサードパーティのサービスにHttpClient
を使用しようとしています。私はAuthenticationHeaderValue
を使用しています。これまで私がこれまで出てきたことは次のとおりです。HttpClient認証ヘッダーが送信されない
HttpRequestMessage<RequestType> request =
new HttpRequestMessage<RequestType>(
new RequestType("third-party-vendor-action"),
MediaTypeHeaderValue.Parse("application/xml"));
request.Headers.Authorization = new AuthenticationHeaderValue(
"Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", "username", "password"))));
var task = client.PostAsync(Uri, request.Content);
ResponseType response = task.ContinueWith(
t =>
{
return t.Result.Content.ReadAsAsync<ResponseType>();
}).Unwrap().Result;
POSTアクションはうまくいきますが、期待したデータが返ってこないようです。いくつかの試行錯誤を経て、最終的にFiddlerを使って生のトラフィックを盗聴することで、認証ヘッダーが送信されていないことがわかりました。
私はthisを見ましたが、AuthenticationHeaderValue
コンストラクタの一部として指定された認証方式があると思います。
私が見逃したことはありますか?
私はそれと同じ結果にrequest.Headers.Authorization' 'と同様のものを試してみました。それは私が次に何を試すべきか完全にはわからないので、頭を傷つける人のビットで私を残しました。私は、MVC4のベータ版と4.5のプレビューは、いくつかのことで直接互換性がないことを知っています。 – Ross
更新プログラムは、少なくとも承認ヘッダーを送信しているようです。私はまだサードパーティのサービスからデータを取得することができません(おそらく私が逃した要求の本体で間違っているかもしれませんが)少なくとも正しいヘッダーが配線されています。それはスタートです。ありがとうございました! – Ross
ASCIIまたはUTF-8? http://stackoverflow.com/questions/11743160/how-do-i-encode-and-decode-a-base64-stringを参照してください。 – Philippe