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

通过Lambda Func发出Http请求

华甫
2023-03-14

在客户机工厂内部,我定义了断路器策略,并尝试使用该策略执行上面的lambda,如下所示

public async Task<HttpResponseMessage> MakeRequest(Func<HttpResponseMessage> request)
  {
     var response = policy.ExecuteAsync(() => request.Invoke());
     return response;
  }

作为一个整体,我对lambda是相当陌生的,将它作为函数传递会变得更加混乱。如何配置函数和第一行代码来执行客户机并返回HttpResponSemessage?我认为任务 func 不正确

共有1个答案

易飞文
2023-03-14

我建议您阅读一些关于Async/Await(而不是lambdas)的信息,因为这是理解如何实现它的关键。

https://docs.microsoft.com/en-us/dotnet/csharp/async

您正在使用异步编程,因此必须决定是使用异步方法MakeRequest还是使用同步方法。如果您想要同步(但那时--不需要使用executeAsync。我想,有Execute()替代),简单地写:

public HttpResponseMessage MakeRequest(Func<HttpResponseMessage> request)
  {
     var response = policy.ExecuteAsync(() => request.Invoke());
     return await response;
  }
public async Task<HttpResponseMessage> MakeRequest(Func<HttpResponseMessage> request)
{
    var response = policy.ExecuteAsync(() => request.Invoke());
    return response;
}

public void MyMethodUsingAsync()
{
    var responsePromises = MakeRequest(() => {...});
    ///do some job wich will be done before response is retrieved (not waiting for it); and if you need it - use await
    var responseReceived = await responsePromises;
}
 类似资料:
  • 我正在尝试让客户端/服务器程序通过ssl交换http消息。首先,我创建了使用DefaultHttpRequest成功交换http请求的客户端和服务器程序。发送请求的代码如下所示: 客户端管道工厂包含以下内容: 服务器管道工厂包含以下内容: .... 到目前为止一切顺利。客户端发送请求,服务器接收并解码请求。使用正确的数据调用我的处理程序上的messageReceived方法。 为了启用 SSL,我

  • 问题内容: 似乎urllib2默认发送HTTP / 1.1请求? 问题答案: urllib2在后台使用httplib进行连接。您可以将其更改为http 1.0,如下所示。我已包含我的apache服务器访问日志,以显示http连接如何更改为1.0 码 访问日志

  • 问题内容: 我正在尝试发出POST请求以检索有关一本书的信息。这是返回HTTP代码的代码:302,已移动 当我从浏览器尝试时,可以从以下页面进行操作:http : //www.bkstr.com/webapp/wcs/stores/servlet/BuybackMaterialsView?langId=-1&catalogId=10001&storeId=10051&schoolStoreId=1

  • 我正在使用Akka 2.4.4并尝试从Apache HttpAsyncClient转移(未成功)。 还有代理支持是怎么回事?似乎对我也不起作用。

  • 问题内容: 当我通过套接字发送正常的HTTP请求时,服务器不会以OK响应进行响应。我从Firefox复制了HTTP标头。这是代码: 但是,这是我收到的回复: 我知道我可以使用来做到这一点,但是当我手动发送HTTP请求时,服务器为什么不识别HTTP请求? 问题答案: 两件事情: 您应该使用而不是将条目打印到单独的行。 HTTP请求应以空白行(link)结尾。所以加

  • 我想在我的React应用程序上发出如下获取请求,无论是否使用Axios。但我不知道如何为此添加身份验证令牌。 你能帮帮我吗?