Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ServiceStack JsonServiceClient响应头_C#_Rest_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Rest,servicestack" /> servicestack,C#,Rest,servicestack" />

C# ServiceStack JsonServiceClient响应头

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

我是ServiceStack的新手,请原谅我的无知

如何让
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);