Sto tentando di utilizzare uno HttpClient
per un servizio di terze parti che richiede l'autenticazione HTTP di base. Sto usando il AuthenticationHeaderValue
. Ecco quello che mi è venuta in mente finora:L'intestazione di autenticazione HttpClient non viene inviata
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;
Sembra che l'azione POST funziona bene, ma non tornare i dati mi aspetto. Attraverso alcuni tentativi ed errori, e in definitiva usando Fiddler per fiutare il traffico non elaborato, ho scoperto che l'intestazione dell'autorizzazione non è stata inviata.
Ho visto this, ma penso di aver ottenuto lo schema di autenticazione specificato come parte del costruttore AuthenticationHeaderValue
.
C'è qualcosa che ho perso?
ho provato e qualcosa di simile con 'request.Headers.Authorization' con gli stessi risultati. Mi ha lasciato un pò di grattacapo perché non sono del tutto sicuro di cosa provare dopo. So che MVC4 beta e l'anteprima 4.5 sono direttamente incompatibili per alcune cose - mi chiedo se questo abbia qualcosa a che fare con questo? – Ross
L'aggiornamento sembra inviare almeno l'intestazione di autorizzazione. Non sono ancora in grado di recuperare i dati dal servizio di terze parti ancora (probabilmente qualcos'altro che non va nel corpo della richiesta che ho perso), ma almeno le intestazioni corrette stanno andando oltre il filo. È un inizio Grazie! – Ross
ASCII o UTF-8? Vedi http://stackoverflow.com/questions/11743160/how-do-i-encode-and-decode-a-base64-string. – Philippe