从响应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的响应中获取位置头。当我通过邮递员进行测试请求时,我可以看到位置标头已设置位置→http://xxx/api/walk/5所以我需要在执行PostAsync之后获得此Location值。

正如我在文档中看到的,您需要访问变量"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;

位置应返回一个Uri对象。

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

最新更新