C# ServiceStack JsonServiceClient响应头
我是ServiceStack的新手,请原谅我的无知 如何让C# ServiceStack JsonServiceClient响应头,c#,rest,servicestack,C#,Rest,servicestack,我是ServiceStack的新手,请原谅我的无知 如何让JsonServiceClient提供我的DataContract响应对象,并允许我仅通过一个请求获取响应头 我已经知道如何返回填充的DataContract响应对象,如下所示: var field1 = "aaa"; var field2 = "bbb"; var client = new JsonServiceClient("https://api.server.com/api"); Response1 response1 = cl
JsonServiceClient
提供我的DataContract
响应对象,并允许我仅通过一个请求获取响应头
我已经知道如何返回填充的DataContract响应对象,如下所示:
var field1 = "aaa";
var field2 = "bbb";
var client = new JsonServiceClient("https://api.server.com/api");
Response1 response1 = client.Post(new Request1() { Field1= field1, Field2= field2});
我还了解了如何从HttpWebResponse
重载中获取响应标题项,如下所示(见下文),这需要对请求数据契约接口进行轻微修改,如下所示:
类请求1//:IReturn
:
但是,我怎样才能同时做到这两件事呢
我确实知道如何使用.PostJsonToUrl()
扩展方法实现这一点,但我的问题是如何使用JsonServiceClient
实现这一点。如果有人好奇,下面是我如何使用.PostJsonToUrl()
扩展方法实现的:
var url = "https://api.server.com/api/method";
string value = null;
Response1 response1 = url.PostJsonToUrl(new Request1() { Field1= field1, Field2= field2},
null, httpResponse =>
{
value = httpResponse.Headers.GetValues("Item")[0];
}).FromJson<Request1>();
var url=”https://api.server.com/api/method";
字符串值=null;
Response1 Response1=url.PostJsonToUrl(新请求1(){Field1=Field1,Field2=Field2},
null,httpResponse=>
{
value=httpResponse.Headers.GetValues(“项”)[0];
}).FromJson();
以下是我的DataContract类
[Route("/method")]
[DataContract]
class Request1 : IReturn<Response1>
{
[DataMember(Name = "field1")]
public string Field1 { get; set; }
[DataMember(Name = "field2")]
public string Field2 { get; set; }
}
[DataContract]
class Response1
{
[DataMember(Name = "field1")]
public long Field1 { get; set; }
[DataMember(Name = "field2")]
public string Field2 { get; set; }
[DataMember(Name = "field3")]
public string Field3 { get; set; }
}
[路由(“/method”)]
[数据合同]
类请求1:IReturn
{
[DataMember(Name=“field1”)]
公共字符串字段1{get;set;}
[DataMember(Name=“field2”)]
公共字符串字段2{get;set;}
}
[数据合同]
班级反应1
{
[DataMember(Name=“field1”)]
公共长字段1{get;set;}
[DataMember(Name=“field2”)]
公共字符串字段2{get;set;}
[DataMember(Name=“field3”)]
公共字符串字段3{get;set;}
}
所有属性都包括一个响应过滤器
和静态全局响应过滤器
属性,您可以在反序列化响应之前使用该属性检查HTTP响应,例如:
string myHeader = null;
var client = new JsonServiceClient(baseUrl) {
ResponseFilter = res => myHeader = res.Headers["X-MyHeader"],
};
var response = client.Post(request);
其中,response
将包含反序列化的响应主体,myHeader
将填充X-myHeader
HTTP Header的值
string myHeader = null;
var client = new JsonServiceClient(baseUrl) {
ResponseFilter = res => myHeader = res.Headers["X-MyHeader"],
};
var response = client.Post(request);