尝试复制BingMapsRESTToolkit的示例,从我的C#控制台应用程序内的API调用接收到空响应。

时间:2019-01-07 17:36:32

标签: c# rest bing-maps

在经过大量的搜寻和拖曳之后,我无法使用他们在Github上的示例代码来使BingMapsRESTToolkit正常工作。我已经安装了所有正确的依赖项(包括BingMapsRESTToolkit),并且我当前的代码如下所示。

    public static void Main(string[] args)
    {
        var apiCall = ApiCallAsync();
    }

     static async Task ApiCallAsync()
    {

        var request = new GeocodeRequest()
        {
            Query = "New York, NY",
            IncludeIso2 = true,
            IncludeNeighborhood = true,
            MaxResults = 25,
            BingMapsKey = ApiKey //Referencing a string constant here declared at the top of the project which is my Bing Query key from Azure.
        };


        var response = await ServiceManager.GetResponseAsync(request);
        if (response != null &&
            response.ResourceSets != null &&
            response.ResourceSets.Length > 0 &&
            response.ResourceSets[0].Resources != null &&
            response.ResourceSets[0].Resources.Length > 0)
        {
            var result = response.ResourceSets[0].Resources[0] as BingMapsRESTToolkit.Location;

            Console.WriteLine(result.Name.Length); // just a simple log in order to see if the request has definitely worked
        }
    }

之后,将断点添加到响应行,它声称响应当前为空。控制台上也没有输出证明未命中WriteLine。

我的问题是,有什么公然导致API调用返回null的问题吗?

1 个答案:

答案 0 :(得分:0)

经过更多的故障排除后,结果证明这段时间的代码足够好。但是,由于main方法中的API调用不多,因此没有足够的时间来获取API调用的响应。为此,我的解决方案是在main方法中的线程上放置15秒钟的睡眠时间,该时间足以使单独的线程获得响应,并有足够的时间让ApiCallAsync的其余部分运行其所有代码。