使用ServiceClientBase检索DTO的HTML格式

时间:2013-10-28 23:48:24

标签: servicestack

使用ServiceClientBase

请求DTO的HTML格式的适当方法是什么?

我尝试了以下内容:

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。重复这个问题是不可取的。
  3. 最后,从API的角度来看,似乎与web services that can return a plain string, stream, etc.平行,以使客户端同样可以获得“普通”结果。

1 个答案:

答案 0 :(得分:2)

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

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

var url = BaseUrl + request.ToUrl("GET", "html");
var html = url.GetStringFromUrl();