显然,.Net Core附带的HttpClient版本仅支持异步方法。
我曾希望能够编写一个简单的类似于套接字的应用程序,该应用程序在收到响应(或响应失败)之前一直阻塞。这样的东西(在Java中):
// Open an HTTP client connection
HttpGet request = new HttpGet("http://localhost:53561/api/Contacts");
// add request headers
request.addHeader(Content-Type", "application/json"); );
// Connect to server
String result = null;
try (CloseableHttpResponse response = httpClient.execute(request)) {
HttpEntity entity = response.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity);
}
}
问:.Net Core中是否有一些不错的,阻塞性的API?还是异步现在是城里唯一的游戏?
您可以通过调用“结果”来阻止任何异步方法,例如:
HttpClient client = new HttpClient();
HttpResponseMessage response = client.PostAsJsonAsync(
"api/products", product).Result;
但是,通常这不是一个好习惯,您应该使用async / await,这样就可以处理多个请求而不会阻塞调用线程。