postasync await http post windows-phone-8.1 httpclient universal

await - httpclient postasync windows phone 8.1 universal app segunda llamada error 404



httpclient c# (2)

Tengo un problema con httpclient en una aplicación universal de Windows 8.1. He estado buscando pero no tengo una solución válida en ninguna publicación.

El problema es que cuando llamo al servicio web la primera vez se ejecuta correctamente, pero cuando lo llamo, segunda o tercera vez, me da un error 404.

Hasta que reinicie, la aplicación no se ejecutará nuevamente.

Necesito enviar esos datos en una función de publicación porque quiero enviar un xml formateado a la cadena.

mi código es muy simple:

var handler = new HttpClientHandler { Credentials = new NetworkCredential("user", "pass", "domain") }; using (var client = new HttpClient(handler)) { var formContent = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("XMLText", XMLText), new KeyValuePair<string, string>("param1", "textParam1") }); HttpResponseMessage response = new HttpResponseMessage(); response = await client.PostAsync(URL, formContent); var responseString = response.Content.ReadAsStringAsync().Result; MessageDialog msgbox = new MessageDialog(responseString); await msgbox.ShowAsync(); }

y mi servicio web es aún más simple:

[WebMethod] public String SetEnvioXML(string XMLText, string param1) { return XMLText; }

¿Alguna solución?

Lo siento por mi inglés y ¡gracias por todo!

Cualquier ayuda es bienvenida!


Finalmente encontré la solución, cambié la autentificación de la autenticación de Windows a la autenticación básica en IIS, estableciendo el dominio en ella. Entonces intento eso:

client = new HttpClient ();
var authHeader = new AuthenticationHeaderValue ("Basic", Convert.ToBase64String (Encoding.UTF8.GetBytes (string.Format ("{0}: {1}", "usuario", "contraseña")))); client.DefaultRequestHeaders.Authorization = authHeader;

Y rige. Gracias por todas sus respuestas!


Intente utilizar el siguiente código, puede ser que esto funcione. Primero intente ejecutar esto en Google Rest Client o Post Man.

HttpRequestMessage httpRequest = new HttpRequestMessage(); httpRequest.Method = HttpMethod.Post; httpRequest.RequestUri = URL; httpRequest.Content = formContent ; response =await client.SendAsync(httpRequest);