1

使用 请求 DTO 的 HTML 格式的适当方法是什么ServiceClientBase

我尝试了以下方法:

string GetHtml(IReturn request) {
    var relativeUrl = request.ToUrl("GET", "html");
    return ServiceClient.Get<string>(relativeUrl);
}

但是,返回的字符串在=". 例如,如果我有一个样式标签,我只会得到以下响应:

<!doctype html>
<html>
<head>
    <title>Report</title>
    <style type="

似乎响应正在通过反序列化...我应该如何避免这种情况?

基本原理

我想使用 ServiceClient 实例而不是创建独立的 Web 请求有两个原因:

  1. ServiceClient 作为所有 Web 请求的一站式商店,很容易被假数据或演示数据模拟。(这便于测试或演示除了服务器实例之外的 UI。)
  2. 身份验证凭据会立即提供给 ServiceClient。重复这种担忧是不可取的。

最后,从 API 的角度来看,它似乎与可以返回纯字符串、流等的 Web 服务平行,以拥有同样可以获得“纯”结果的客户端。

4

1 回答 1

2

有点不确定你想做什么。HTML 响应无法序列化为 DTO,因此您不应尝试使用其中一个服务客户端,这些服务客户端用于处理可序列化为响应 DTO 的特定响应。

因此,要获得服务的 HTML 响应,您可以使用基本的 HTTP 客户端,例如ServiceStack 的 HTTP Utils,例如:

var url = BaseUrl + request.ToUrl("GET", "html");
var html = url.GetStringFromUrl();
于 2013-10-29T04:23:10.263 回答