Rendre le client http synchrone: attendre la réponse
j'ai un fichier à télécharger et certains fichiers ont échoué parce que le post est asynchrone et pas synchrone..
j'essaie de faire cet appel comme appel synchronisé..
je veux attendre la réponse.
Comment puis-je rendre cet appel synchrone?
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);
}
}
}
Toute aide appréciée!
24
demandé sur
Darrel Miller
2015-06-30 07:56:25
2 réponses
modifier
await content.ReadAsStringAsync().ConfigureAwait(false)
content.ReadAsStringAsync().Result
le ReadAsStringAsync renvoie un objet de tâche. le.' Le résultat à la fin de la ligne de dire au compilateur de retourner à l'intérieur de la chaîne.
41
répondu
michael berezin
2015-06-30 06:38:51
cela devrait le faire:
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);
}
}
}
1
répondu
NCC-2909-M
2015-06-30 05:24:06