【问题标题】:Get HttpResult using the JsonServiceClient使用 JsonServiceClient 获取 HttpResult
【发布时间】:2012-10-29 02:56:59
【问题描述】:

我正在使用 servicestack 的新 API 从其他服务方法之一返回 HttpResult。有没有办法使用 JsonServiceClient 获取 HttpResult?

例如:JSonServiceClient.Send<HttpResult>("DELETE","person", new { PersonID = 30 });

我想检查来自 httpresult 的标头信息。

谢谢。

【问题讨论】:

    标签: servicestack


    【解决方案1】:

    没有来自 ServiceStack Web 服务的 HttpResult 客户端响应之类的东西。

    您使用 HttpResult 自定义从您的服务返回的 HTTP 响应,例如添加额外的 HTTP 标头。但客户端看到的响应正文仍然只是响应 DTO(如果有)。

    使用 fiddler、wireshark、chome web 检查器(如果这是一个 Ajax 调用)或类似 ServiceStack 的 Request Logger plugin 来检查 HTTP 流量。

    ServiceStack 的 REST 客户端使用无效

    还可以考虑使用适当的客户端 REST API,例如 client.Delete()client.Get() 等,而不是重载 T.Send() 方法(通常是 POST)。

    在 ServiceClient 中使用类型化 DTO,而不是不受支持的匿名类型。

    使用 ServiceStack 服务客户端检查 HTTP 标头

    ServiceStack 的服务客户端提供 LocalGlobal WebResponse(和请求)过滤器,您可以使用它们来内省为该请求返回的 WebClient 的 HttpWebResponse,例如:

    client.ResponseFilter = httpRes => {
       httpRes.Headers.. //do something with returned headers
    };
    client.Delete(new Person { Id = 30, ...});
    

    【讨论】:

    • http 结果在我用来测试我的服务的提琴手上看起来不错。很好奇 servicestack 客户端是否能够看到结果。我想通过代码检查标题。谢谢!
    • 在这种情况下,我已经更新了答案以包含一个使用服务客户端访问返回的标头的示例。
    • 在 REST 中,做一个 Post 请求并得到一个 201 的响应并且返回没有正文的 Location 标头是很常见的。 ServiceStack 提倡避免使用 HTTP。我说的对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 2016-12-29
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多