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

我有向 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 值。


牛魔王的故事
浏览 183回答 1
1回答

浮云间

正如我在文档中看到的,您需要访问包含在变量“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”进行同步。
打开App,查看更多内容
随时随地看视频慕课网APP