当前位置: 首页 > 知识库问答 >
问题:

为什么使用HttpClient进行同步连接

吴才俊
2023-03-14

如果有人能提供任何线索,我将不胜感激。我不是一个为了新技术而使用新技术的人。

共有1个答案

澹台锐
2023-03-14

对于现在遇到这个问题的人来说,.NET5.0在HttpClient中添加了一个同步的send方法。https://github.com/dotnet/runtime/pull/34948

这里详细讨论了它的优点--https://github.com/dotnet/runtime/issues/32125

因此,您可以使用它来代替SendAsync。例如

public string GetValue()
{
    var client = new HttpClient();
            
    var webRequest = new HttpRequestMessage(HttpMethod.Post, "http://your-api.com")
    {
        Content = new StringContent("{ 'some': 'value' }", Encoding.UTF8, "application/json")
    };

    var response = client.Send(webRequest);

    using var reader = new StreamReader(response.Content.ReadAsStream());
            
    return reader.ReadToEnd();
}
 类似资料:
  • 在我的场景中,我必须将数据从一个web应用程序发送到一个有效的数据存储区webapi。请求必须是同步的,如果出现问题,我非常希望抛出,因为这意味着应用程序的关键部分不可用。 这是一个现有问题的衍生,但不是重复;为什么使用HttpClient进行同步连接? 但在我的场景中,我确实想要那种行为。虽然有很多很好的用例,但有人能给出在我的场景中不使用的好理由吗?我使用的对象是否正确?更重要的是,为什么?

  • 那么,回到问题上来,鉴于微软建议不要在新的开发中使用WebRequest而是使用只提供异步API的HttpClient,我该怎么办呢? 这是我正在做的一些伪代码... 如何实现ProcessStuff()?

  • 问题内容: 我指的是此处提出的问题,并使用作者代码示例,现在我的问题是 作者为什么要使用,真的有必要吗,因为syncedMap始终会确保没有两个线程试图对其进行操作,那么为什么需要在该地图本身上进行操作呢? 非常感谢您的解释。 问题答案: 为什么我们需要对其本身进行同步? 您可能需要在一个已经同步的集合上进行同步,因为您正在对该集合执行两个操作-在您的示例中,是a 然后是a。您试图在 _调用_集合

  • 响应代码应该是什么,它同时具有创建和更新操作:

  • 问题内容: 假设我要实现一个非常简单的类,并且要注意并发和多线程问题, 即使是以下方法,还是要这样做吗? 另一方面,如果我们将所有方法都同步了,就不会再使用了,对吗? 问题答案: 将您的金额声明为不会阻止线程在方法执行过程中被抢占(如果未同步)。因此,举例来说,如果您的方法没有以任何方式同步,即使您的方法数量达到 这些问题称为比赛条件。一个可能的示例是,当两个线程尝试从同一帐户转移资金时。当一个线

  • 问题内容: 为什么此测试程序会导致? 结果: 问题答案: 您已经正确地指出了必须从同步块中调用。 但是,在您的情况下,由于自动装箱,您在其上同步的对象与您在其上调用的实例不同。实际上,新的,递增的实例仍然被限制在堆栈中,并且其他线程可能不会在调用中被阻塞。 您可以实现自己的可变计数器来执行同步。根据您的应用程序,您可能还会发现AtomicInteger满足您的需求。