Tengo un archivo para cargar y algunos de los archivos fallaron porque la publicación es asíncrona y no síncrona.
Estoy tratando de hacer esta llamada como una llamada sincronizada...
Quiero esperar la respuesta.
¿Cómo puedo hacer esta llamada como síncrona?
static async Task<JObect> Upload(string key, string url, string sourceFile, string targetFormat) { using (HttpClientHandler handler = new HttpClientHandler { Credentials = new NetworkCredential(key, "") }) using (HttpClient client = new HttpClient(handler)) { var request = new MultipartFormDataContent(); request.Add(new StringContent(targetFormat), "target_format"); request.Add(new StreamContent(File.OpenRead(sourceFile)), "source_file", new FileInfo(sourceFile).Name); using (HttpResponseMessage response = await client.PostAsync(url, request).ConfigureAwait(false)) using (HttpContent content = response.Content) { string data = await content.ReadAsStringAsync().ConfigureAwait(false); return JsonObject.Parse(data); } } }¡Cualquier ayuda apreciada!
cambio
await content.ReadAsStringAsync().ConfigureAwait(false)para
content.ReadAsStringAsync().ResultReadAsStringAsync devuelve un objeto Task. el '.Result' al final de la línea le dice al compilador que devuelva la cadena interna.
Deberias hacer eso:
static async Task<JObect> Upload(string key, string url, string sourceFile, string targetFormat) { using (HttpClientHandler handler = new HttpClientHandler { Credentials = new NetworkCredential(key, "") }) using (HttpClient client = new HttpClient(handler)) { var request = new MultipartFormDataContent(); request.Add(new StringContent(targetFormat), "target_format"); request.Add(new StreamContent(File.OpenRead(sourceFile)), "source_file", new FileInfo(sourceFile).Name); using (HttpResponseMessage response = await client.PostAsync(url,request)) using (HttpContent content = response.Content) { string data = await content.ReadAsStringAsync(); return JsonObject.Parse(data); } } }