为了账号安全,请及时绑定邮箱和手机立即绑定

从响应中获取位置标头,httpclient

从响应中获取位置标头,httpclient

C#
牛魔王的故事 2021-11-07 19:46:16
我有向 REST API 发出 POST 请求的当前代码:string url = "https://xxxx.azurewebsites.net/api/walk/";string sContentType = "application/json";JObject jsonObject = new JObject();jsonObject.Add("Duration", walkInfo.Duration);jsonObject.Add("WalkDate", walkInfo.WalkDate);HttpClient oHttpClient = new HttpClient();var oTaskPostAsync = oHttpClient.PostAsync(url, new StringContent(jsonObject.ToString(), Encoding.UTF8, sContentType));它工作得很好,我遇到的问题是我无法弄清楚如何从 API 的响应中获取位置标头。当我通过邮递员进行测试时,我可以看到位置标头设置为Location → http://xxx/api/walk/5,因此我需要在执行 PostAsync 后获取此 Location 值。
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

正如我在文档中看到的,您需要访问包含在变量“oTaskPostAsync”中的结果。


因此,要获取位置,您应该执行以下操作:


string url = "https://xxxx.azurewebsites.net/api/walk/";

string sContentType = "application/json";


JObject jsonObject = new JObject();

jsonObject.Add("Duration", walkInfo.Duration);

jsonObject.Add("WalkDate", walkInfo.WalkDate);



HttpClient oHttpClient = new HttpClient();

var oTaskPostAsync = oHttpClient.PostAsync(url, new StringContent(jsonObject.ToString(), Encoding.UTF8, sContentType));

var location = oTaskPostAsync.Headers.Location;

Location 应该返回一个 Uri 对象。


注意:在这里您必须小心,因为您正在进行异步调用,您必须考虑到在服务器响应之前您可能不会拥有该值,因此您可能应该使用“await”进行同步。


查看完整回答
反对 回复 2021-11-07
  • 1 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信