Estoy tratando de usar un HttpClient
para un servicio de terceros que requiera autenticación HTTP básica. Estoy usando el AuthenticationHeaderValue
. Aquí es lo que he encontrado hasta el momento:El encabezado de autenticación HttpClient no se envía
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;
Parece que la acción POST funciona bien, pero yo no regreso los datos que espero. A través de un proceso de prueba y error, y finalmente usando Fiddler para olfatear el tráfico sin procesar, descubrí que el encabezado de la autorización no se está enviando.
He visto this, pero creo que tengo el esquema de autenticación especificado como parte del constructor AuthenticationHeaderValue
.
¿Hay algo que me he perdido?
he intentado eso y algo similar con 'request.Headers.Authorization' con los mismos resultados. Me ha dejado un poco de scratch, ya que no estoy seguro de qué probar después. Sé que la versión preliminar MVC4 beta y 4.5 son directamente incompatibles para algunas cosas. Me pregunto si eso tiene algo que ver con eso. – Ross
Su actualización al menos parece enviar el encabezado de autorización. Todavía no puedo recuperar datos del servicio de terceros (probablemente haya pasado algo diferente en el cuerpo de la solicitud que me he perdido), pero al menos los encabezados correctos están pasando por alto. Es un comienzo. ¡Gracias! – Ross
ASCII o UTF-8? Ver http://stackoverflow.com/questions/11743160/how-do-i-encode-and-decode-a-base64-string. – Philippe