我在使用RestSharp从HttpResponseMessage获取令牌时遇到了一些麻烦。这是我的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";
}
如果我循环并打印响应的标题,则结果如下:
"令牌"我在控制器中添加的标题响应不存在。有没有一种简单的方法可以访问"标题"出现在回复正文中的部分?
编辑:附上"标题"的图片邮递员的答复部分。没有"令牌"头。知道为什么response.Headers.Add("Token", token)
方法没有添加标题,或者我是否完全误解了标题?
答案 0 :(得分:0)
所以我应该指定这是一个.NET Core应用程序。要解决此问题,我必须转到Startup.cs
文件并将以下内容添加到ConfigureServices
方法中:
将services.AddMvc();
更改为services.AddMvc().AddWebApiConventions();
您将需要NuGet包Microsoft.AspNetCore.Mvc.WebApiCompatShim,它允许与旧的Web Api 2方式兼容。