gpt4 book ai didi

c# - 如果状态码不等于 200 OK,则使用 Polly 重试 api 请求

转载 作者:行者123 更新时间:2023-12-04 15:41:35 24 4
gpt4 key购买 nike

我正在尝试使用 Polly 来处理 200 OK 以外的状态代码,以便它重试 API 请求。

但是,我很难理解如何让 Polly 吞下异常然后执行重试。这是我目前拥有的,但在语法上不正确:

var policy = Policy.HandleResult<HttpStatusCode>(r => r == HttpStatusCode.GatewayTimeout)
.Retry(5);
HttpWebResponse response;

policy.Execute(() =>
{
response = SendRequestToInitialiseApi(url);
});

在执行过程中,我还需要将响应分配给一个变量,以便在方法的其他地方使用。

响应的返回类型是“HttpWebResponse”,例如,当我得到“504”时,它会抛出异常。

如有任何帮助/反馈,我们将不胜感激。

干杯

最佳答案

您提供给 HandleResult 的类型必须与您要从执行中返回的类型相同,在您的情况下是 HttpWebResponse,因为您要使用这个值稍后。

编辑:我按照mountain traveler的建议添加了异常处理

var policy = Policy
// Handle any `HttpRequestException` that occurs during execution.
.Handle<HttpRequestException>()
// Also consider any response that doesn't have a 200 status code to be a failure.
.OrResult<HttpWebResponse>(r => r.StatusCode != HttpStatusCode.OK)
.Retry(5);

// Execute the request within the retry policy and return the `HttpWebResponse`.
var response = policy.Execute(() => SendRequestToInitialiseApi(url));

// Do something with the response.

关于c# - 如果状态码不等于 200 OK,则使用 Polly 重试 api 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57712514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com