使http客户端同步:等待响应

我有一些文件要上传,一些文件失败,因为post是异步的而不是同步的..

我正在尝试将此调用作为同步调用..

我想等待回应。

如何将此调用设置为同步?

static async Task 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); } } } 

任何帮助赞赏!

更改

 await content.ReadAsStringAsync().ConfigureAwait(false) 

 content.ReadAsStringAsync().Result 

ReadAsStringAsync返回一个Task对象。 该行末尾的’.Result’告诉编译器返回内部字符串。

应该这样做:

 static async Task 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); } } }