3.19请求生命周期事件

在将 HttpContent 实例设置给 HttpRequestMessage 对象的 Content 属性之前,您可以执行一些额外的预处理操作。

设置添加请求内容前的操作#

在将 HttpContent 实例设置给 HttpRequestMessage 对象的 Content 属性之前,您可以执行一些额外的预处理操作。

cs
HttpRequestBuilder.Post("https://furion.net/")    .SetOnPreSetContent(httpContent =>    {        // 示例:为请求内容设置 Content-Disposition 请求标头        httpContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")        {            Name = multipartFormDataItem.Name,            FileName = multipartFormDataItem.FileName,            Size = multipartFormDataItem.FileSize        };    });

注意SetOnPreSetContent 方法支持多次调用,每次调用的结果会累积叠加。

设置发送请求前的操作#

在发送 HTTP 远程请求之前,您可以执行一些预处理操作。

cs
HttpRequestBuilder.Post("https://furion.net/")    .SetOnPreSendRequest(requestMessage =>    {        // 示例:添加名为 "header1" 的请求标头        requestMessage.Headers.TryAddWithoutValidation("header1", "value1");    });

注意SetOnPreSendRequest 方法支持多次调用,每次调用的结果会累积叠加。

设置收到响应后的操作#

在接收到 HTTP 响应之后,您可以执行一些后续处理操作。

cs
HttpRequestBuilder.Post("https://furion.net/")    .SetOnPostReceiveResponse((responseMessage, cancellationToken) =>    {        // 示例:打印响应状态码        Console.WriteLine(responseMessage.StatusCode);        return Task.CompletedTask;    });

注意SetOnPostReceiveResponse 方法支持多次调用,每次调用的结果会累积叠加。

设置发送请求失败时的处理#

HTTP 请求发送过程中发生异常时,您可以执行一些错误处理操作。

cs
HttpRequestBuilder.Post("https://furion.net/")    .SetOnRequestFailed((exception, responseMessage) =>     // 注意:responseMessage 可能为空    {        // 示例:打印异常信息        Console.WriteLine(exception.Message);    });

注意:可将 SetOnRequestFailed 与异常抑制方法 SuppressExceptions() 配合使用,以便在不中断程序流程的前提下捕获并处理请求失败信息。

确保请求成功#

启用该功能后,当 HTTP 响应的状态码不在 200-299 范围内时(即 IsSuccessStatusCode 属性为 false),将自动抛出异常。

cs
HttpRequestBuilder.Post("https://furion.net/")    .EnsureSuccessStatusCode();HttpRequestBuilder.Post("https://furion.net/")    .EnsureSuccessStatusCode(false);    // 关闭验证