2016-10-23 5 views
1

Здравствуйте, я слежу, чтобы this guideКак использовать HttpClient без асинхронного

static async Task<Product> GetProductAsync(string path) 
{ 
    Product product = null; 
    HttpResponseMessage response = await client.GetAsync(path); 
    if (response.IsSuccessStatusCode) 
    { 
     product = await response.Content.ReadAsAsync<Product>(); 
    } 
    return product; 
} 

Я использую этот пример на моем коде, и я хочу знать, есть ли способ использовать HttpClient без async/await и как я могу получить только строка ответа?

Спасибо заранее

+0

Вы можете сослаться на это: http://stackoverflow.com/questions/31129873/make-http-client-synchronous-wait-for-response –

+2

Почему бы не 'WebClient.DownloadString' вместо скручивания' HttpClient' способами не предназначено для использования? – spender

ответ

-3

Конечно, вы можете:

public static string Method(string path) 
{ 
    using (var client = new HttpClient()) 
    { 
     var response = client.GetAsync(path).Result; 
     if (response.IsSuccessStatusCode) 
     { 
      var responseContent = response.Content; 
      return responseContent.ReadAsStringAsync().Result; 
     } 
    } 
} 
+2

Просто FYI: Это может вызвать взаимоблокировки в ASP.NET и WinForms. Использование '.Result' или' .Wait() 'с TPL должно выполняться с осторожностью. – MarcinJuraszek

+0

Спасибо, что это работает. –

+0

См. Это для информации о блокировке https://stackoverflow.com/questions/32195595/avoiding-deadlock-with-httpclient –

5

есть ли способ использовать HttpClient без асинхронном/ждать и как я могу получить только строку ответа?

HttpClient был специально разработан для асинхронного использования.

Если вы хотите синхронно загружать строку, используйте WebClient.DownloadString.

+1

Hah! Я просто оставил комментарий для этого. Правильный ответ. – spender

+0

Спасибо, но я просто следую руководству, которое я указал в вопросе –

+1

@KumarJ .: Часть следующего руководства знает, что нужно изменить. –

 Смежные вопросы

  • Нет связанных вопросов^_^