3.19请求生命周期事件
在将 HttpContent 实例设置给 HttpRequestMessage 对象的 Content 属性之前,您可以执行一些额外的预处理操作。
设置添加请求内容前的操作#
在将 HttpContent 实例设置给 HttpRequestMessage 对象的 Content 属性之前,您可以执行一些额外的预处理操作。
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 远程请求之前,您可以执行一些预处理操作。
HttpRequestBuilder.Post("https://furion.net/") .SetOnPreSendRequest(requestMessage => { // 示例:添加名为 "header1" 的请求标头 requestMessage.Headers.TryAddWithoutValidation("header1", "value1"); });注意:SetOnPreSendRequest 方法支持多次调用,每次调用的结果会累积叠加。
设置收到响应后的操作#
在接收到 HTTP 响应之后,您可以执行一些后续处理操作。
HttpRequestBuilder.Post("https://furion.net/") .SetOnPostReceiveResponse((responseMessage, cancellationToken) => { // 示例:打印响应状态码 Console.WriteLine(responseMessage.StatusCode); return Task.CompletedTask; });注意:SetOnPostReceiveResponse 方法支持多次调用,每次调用的结果会累积叠加。
设置发送请求失败时的处理#
当 HTTP 请求发送过程中发生异常时,您可以执行一些错误处理操作。
HttpRequestBuilder.Post("https://furion.net/") .SetOnRequestFailed((exception, responseMessage) => // 注意:responseMessage 可能为空 { // 示例:打印异常信息 Console.WriteLine(exception.Message); });注意:可将 SetOnRequestFailed 与异常抑制方法 SuppressExceptions() 配合使用,以便在不中断程序流程的前提下捕获并处理请求失败信息。
确保请求成功#
启用该功能后,当 HTTP 响应的状态码不在 200-299 范围内时(即 IsSuccessStatusCode 属性为 false),将自动抛出异常。
HttpRequestBuilder.Post("https://furion.net/") .EnsureSuccessStatusCode();HttpRequestBuilder.Post("https://furion.net/") .EnsureSuccessStatusCode(false); // 关闭验证