3.37SOAP 请求头与 Mock
当调用基于 SOAP 协议的 Web 服务时,通常需要在请求头中指定 SOAPAction,以便服务端识别要执行的操作。使用 SetSOAPAction 方法可快速设置该头。
设置 SOAP 请求头(WebService)#
当调用基于 SOAP 协议的 Web 服务时,通常需要在请求头中指定 SOAPAction,以便服务端识别要执行的操作。使用 SetSOAPAction 方法可快速设置该头。
HttpRequestBuilder.Get("http://您的主机地址/Share/DatabaseManager.asmx") .SetSOAPAction("http://tempuri.org/GetDatabaseList");// 自动为 SOAPAction 值添加双引号包裹(符合 SOAP 1.1 规范建议)HttpRequestBuilder.Get("http://您的主机地址/Share/DatabaseManager.asmx") .SetSOAPAction("http://tempuri.org/GetDatabaseList", addQuotes: true);模拟请求响应与异常(Mock)#
MockResponse 和 MockException 专为单元测试设计,可在不实际发送 HTTP 请求的情况下,直接返回预设响应或抛出预设异常,对业务代码零侵入。
// 模拟 JSON 响应(自动序列化)HttpRequestBuilder.Get("https://api.example.com/weather") .MockResponse(new { Temperature = 25, Condition = "Sunny" });// 模拟自定义状态码和内容类型HttpRequestBuilder.Post("https://api.example.com/upload") .MockResponse(new { Id = 123 }, HttpStatusCode.Created, "application/json");// 模拟完整的 HttpResponseMessage(适用于文件流等复杂场景)var content = new StreamContent(File.OpenRead("test.pdf"));content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = content };HttpRequestBuilder.Get("https://example.com/download") .MockResponse(response);// 模拟异常(超时、网络中断等)HttpRequestBuilder.Get("https://api.example.com/data") .MockException(new HttpRequestException("Connection timed out"));// 清除所有模拟设置HttpRequestBuilder.Get("https://api.example.com/data") .MockResponse(new { }) .ClearMock(); // 清除后请求将正常发送该功能与 HttpRemoteService 结合使用时,可完全替代真实网络请求,极大提升单元测试的隔离性和执行速度。