我使用 GetAsync 方法对 WebAPI 进行了 Get API 调用,该方法根据位置参数获取 JSON 中的一些值。我在循环中运行 WebAPI 调用,出于某种原因,对于某些位置参数,代码返回“无内容”状态代码 204。当我从 Postman 调用 webAPI 时,它成功返回数据。
这是我的代码:
private static async Task<string[]> GetLatLongValues(string locationDescription)
{
string[] latLng = new string[2];
string locationAPI = "https://zoek-search-api-live-us-2.azurewebsites.net/" ;
try
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(locationAPI);
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("cache-control", "no-cache");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//HTTP GET
var responseTask = await client.GetAsync("Geocode/SearchLocation?location=" + Uri.EscapeDataString(locationDescription)); //.ConfigureAwait(continueOnCapturedContext: false);
responseTask.EnsureSuccessStatusCode();
if (responseTask.IsSuccessStatusCode)
{
var resString = await responseTask.Content.ReadAsStringAsync ();
//resString.Wait();
if (resString.Length !=0)
{
Newtonsoft.Json.Linq.JArray resArr = Newtonsoft.Json.Linq.JArray.Parse(resString);
latLng[0] = resArr[0]["latitude"].ToString();
latLng[1] = resArr[0]["longitude"].ToString();
validLatLong.Add(locationDescription, latLng);
}
else
{
latLng[0] = "0";
latLng[1] = "0";
InvalidLatLong.Add(locationDescription, latLng);
isLocValid = false;
}
}
}
return latLng;
}
catch(Exception ex)
{
latLng[0] = "0.0";
latLng[1] = "0.0";
return latLng;
}
}