C# GetAsync await 返回状态代码 204 而 PostMan 返回 200

时间:2021-03-16 14:19:46

标签: c# async-await getasync

我使用 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;
    }
}

0 个答案:

没有答案