我正在尝试在外部服务上发出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;
}
问题是我得到一个带有属性的响应对象&#34; count&#34;即使服务器使用正确的值/响应回答200(使用Fiddler)
,也为null我尝试将计数类型从字符串更改为int,但后来我得到0而不是null。
你们任何人都有想法吗?
感谢您的帮助!
答案 0 :(得分:3)
默认情况下,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 });