我正在尝试在外部服务上发出JSON请求,如下所示:
GET请求:
https://remotehost/path/mycount?foo=C&bar=21
回应:
{"count":1000}
为此,我使用ServiceStack JsonServiceClient,这是下面的代码
var client = new JsonServiceClient(classifiedSearchBaseURL);
var response = client.Get<CountResponse>(new MyRequest {
foo = "C",
bar = 21
});
class MyRequest
{
public string foo { get; set; }
public int bar { get; set; }
}
class CountResponse
{
public string count;
}
问题是,即使服务器用正确的值/响应(使用Fiddler)回答了200,我也得到了一个响应对象,其属性“ count”为空.
我尝试将计数类型从字符串更改为整数,但随后得到0而不是null.
你们有个主意吗?
谢谢你的帮助!
解决方法:
默认情况下,ServiceStack仅序列化公共属性,因此您需要将Response DTO更改为:
class CountResponse
{
public string count { get; set; }
}
我还建议添加IReturn< T>标记界面,例如:
class MyRequest : IReturn<CountResponse>
{
public string foo { get; set; }
public int bar { get; set; }
}
因此,客户端可以自动推断出响应类型,因此您的呼叫站点可以减少为:
var response = client.Get(new MyRequest { foo = "C", bar = 21 });