3.30Content-Type 与条件构建
在与部分较老版本的 HTTP 服务进行对接时,如果发送请求内容时设置了 Content-Type 请求标头,可能会导致请求处理异常。而现代 HTTP 接口通常不会存在此类限制。
移除内容的默认 Content-Type#
在与部分较老版本的 HTTP 服务进行对接时,如果发送请求内容时设置了 Content-Type 请求标头,可能会导致请求处理异常。而现代 HTTP 接口通常不会存在此类限制。
若在发送请求时需要移除请求内容对应的 Content-Type 请求标头,可以按照以下方式进行设置:
HttpRequestBuilder.Post("https://furion.net") .SetOmitContentType(true); // 移除内容默认的 Content-Type除了采用上述方法外,另一种实现方式是利用 SetOnPreSetContent(Action<HttpContent>) 方法,在设置请求内容之前修改请求头,将 Content-Type 置为 null:
HttpRequestBuilder.Post("https://furion.net") .SetOnPreSetContent(httpContent => { httpContent.Headers.ContentType = null; });条件化配置构建器#
在构建 HTTP 远程请求的构建器实例时,常需根据不同条件动态配置请求参数。例如,当用户执行搜索操作时,应将 ?search=关键字 查询参数添加到请求中;反之,则无需添加。
针对此类场景,HttpRequestBuilder 提供了 When 方法,用于根据指定条件执行相应的配置操作。该方法支持链式调用,使代码更加简洁清晰。
HttpRequestBuilder.Post("https://furion.net") .When(!string.IsNullOrEmpty(token), b => b.AddBearerAuthentication(token)) .When(!string.IsNullOrEmpty(keyword), b => b.WithQueryParameter("search", keyword));示例代码说明:
- 当
token不为空或null时,自动添加Bearer认证。 - 当
keyword不为空或null时,将search查询参数添加到请求中。
该方式可灵活应用于各种条件判断场景,提升代码的可维护性和可读性。