我在使用HttpResponseMessage从RestSharp获得令牌时遇到了一些问题。下面是我的API控制器代码:
public HttpResponseMessage Create(long id)
{
var token = _tokenCreator.CreateToken(id);
var response = new HttpResponseMessage();
response.Headers.Add("Token", token);
response.StatusCode = HttpStatusCode.OK;
return response;
}这是生成我想要的令牌,并创建下面的响应图。当我用Postman调用方法时,这是我收到的响应的主体。如果我查看发送请求的代码中的响应的Content属性,就会得到相同的结果。
那里显然有一个标头部分,但是在我的调用代码中,它没有被RestSharp识别。
public string CreateToken(long id)
{
var client = new RestClient(apiUrl);
var request = new RestRequest(Method.GET)
{
Resource = "tokencreator/create"
}
request.AddQueryParameter("id", id.ToString());
var response = client.Execute(request);
var headers = response.Headers.ToList();
// Here is what I want to do, but does not return a result
var tokenHeader = headers.Find(x => x.Name == "Token");
if(tokenHeader != null)
{
return tokenHeader.Value.ToString();
}
return "no token";
}如果我循环遍历并打印响应的标题,结果如下:
我在控制器中添加到响应中的“令牌”标头不存在。是否有一种简单的方法来访问出现在响应正文中的"header“部分?
编辑:附上来自邮递员的响应的“标题”部分的图片。没有“令牌”标题。是否知道为什么response.Headers.Add("Token", token)方法不添加标头,或者我是否完全误解了头?
发布于 2017-04-04 13:06:54
因此,我应该指定这是一个.NET核心应用程序。要解决这个问题,我必须转到Startup.cs文件并将以下内容添加到ConfigureServices方法中:
将services.AddMvc();更改为services.AddMvc().AddWebApiConventions();
您将需要NuGet包Microsoft.AspNetCore.Mvc.WebApiCompatShim,它允许与旧的Web 2兼容。
https://stackoverflow.com/questions/43191713
复制相似问题