Make http client synchronous: wait for response

前端 未结 2 1712
萌比男神i
萌比男神i 2021-01-31 15:59

I have some file to upload and some of the files failed because the post is asynchronous and not synchronous..

I\'m trying to make this call as synchronized call..

相关标签:
2条回答
  • 2021-01-31 16:26

    change

    await content.ReadAsStringAsync().ConfigureAwait(false)
    

    to

    content.ReadAsStringAsync().Result
    

    the ReadAsStringAsync returns a Task object. the '.Result' in the end of the line tell the compiler to return the inner string.

    0 讨论(0)
  • 2021-01-31 16:38

    That should do it:

    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);
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题