3.81获取请求构建器或请求消息(预检请求)

创建于 2026 年 8 月 17 日约 2 分钟读完

在某些情况下,您可能希望只获取 HTTP 请求对象本身,而不实际发送请求。例如:在单元测试中验证生成的请求是否符合预期,或拿到请求构建器后进一步手动修改,亦或是将请求消息传递给另一个系统执行。

为此,当发送 HTTP 远程请求的方法的返回类型为 HttpRequestBuilderHttpRequestMessage 时,框架将直接构建并返回该对象,跳过实际的网络传输。示例如下:

cs
// 获取构建器,可继续链式配置后手动发送var builder = await httpRemoteService.GetAsAsync<HttpRequestBuilder>("https://furion.net");	// 不发送请求builder.WithHeader("X-Custom", "value");var httpResponseMessage = await httpRemoteService.SendAsync(builder);	// 发起网络请求// 获取 HttpRequestMessage,用于断言或外部传递var httpRequestMessage = await httpRemoteService.GetAsAsync<HttpRequestMessage>("https://furion.net");	// 不发送请求Assert.Equal("https://furion.net/", httpRequestMessage.RequestUri?.ToString());

应用场景

  • 预检请求(Pre-flight Check):在正式发送前,检查生成的请求对象是否符合预期。确认 URL、请求头、Token 注入等都正确无误后,再手动发送或继续处理。
  • 单元测试:无需模拟网络环境,直接验证生成的 HttpRequestMessage 是否包含了正确的参数、头和认证信息。
  • 请求对象传递:将构造好的 HttpRequestMessage 传递给其他服务、库或进程执行,实现请求构造与请求执行的分离。
  • 混合编程:先通过构建器或声明式完成大部分配置(参数映射、Token 注入等),再拿到构建器进行少量动态修改后手动发送,兼顾声明式的简洁与命令式的灵活。