Ich versuche, einen HttpClient
für einen Dienst eines Drittanbieters zu verwenden, der eine einfache HTTP-Authentifizierung erfordert. Ich benutze die AuthenticationHeaderValue
. Hier ist, was ich mit so weit habe kommen:HttpClient-Authentifizierungsheader wird nicht gesendet
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;
Es sieht aus wie die POST-Aktion funktioniert gut, aber ich habe nicht die Daten wieder ich erwarte. Durch einige Versuche und Fehler, und schließlich mit Fiddler, um den rohen Verkehr zu schnüffeln, entdeckte ich, dass der Berechtigungsheader nicht gesendet wurde.
Ich habe this gesehen, aber ich denke, ich habe das Authentifizierungsschema als Teil des AuthenticationHeaderValue
Konstruktors angegeben.
Gibt es etwas, das ich vermisst habe?
ich versuchte, und etwas ähnliches mit 'request.Headers.Authorization' mit den gleichen Ergebnissen. Es hat mich mit ein bisschen Kopf-Scratcher verlassen, da ich nicht ganz sicher bin, was ich als nächstes versuchen soll. Ich weiß, dass die MVC4-Beta und die 4.5-Vorschau für einige Dinge direkt inkompatibel sind - ich frage mich, ob das etwas damit zu tun hat? – Ross
Ihr Update scheint zumindest den Berechtigungsheader zu senden. Ich bin noch nicht in der Lage, Daten vom Third-Party-Service noch zu erhalten (wahrscheinlich etwas anderes falsch in der Anfrage Körper, die ich verpasst habe), aber zumindest die richtigen Header gehen über die Leitung. Es ist ein Anfang. Vielen Dank! – Ross
ASCII oder UTF-8? Siehe http://stackoverflow.com/questions/11743160/how-doi-i-decode-and-decode-a-base64-string. – Philippe