.NET 中的 Google Routes API 突然开始返回空

问题描述 投票:0回答:1

直到最近,以下代码仍在运行并从路由 API 返回旅行路线。


        string routesAPIurl = "https://routes.googleapis.com/directions/v2:computeRoutes";
        WebRequest request = WebRequest.Create(routesAPIurl);
        request.Method = "POST";
        //request.Headers["Content-Type"] = "application/json";
        request.ContentType = "application/json";
        request.Headers["X-Goog-Api-Key"] = "***************************";
        request.Headers["X-Goog-FieldMask"] = "routes.legs.steps.transitDetails";


        //create transitObject
        TransitObject transitO = new TransitObject();
        transitO.travelMode = "TRANSIT";
        transitO.departureTime = DateTime.Parse("2024-04-17T09:30:00.000Z");
        transitO.computeAlternativeRoutes = true;
        Origin trnOrigin = new Origin();
        trnOrigin.address = "********";
        transitO.origin = trnOrigin;
        Destination trnDestination = new Destination();
        trnDestination.address = "********";
        transitO.destination = trnDestination;
        TransitPreferences transitPreferences = new TransitPreferences();
        transitPreferences.routingPreference = "TRANSIT_ROUTING_PREFERENCE_UNSPECIFIED";
        transitPreferences.allowedTravelModes = new string[] { "LIGHT_RAIL", "BUS" }.ToList();
        transitO.transitPreferences = transitPreferences;


        var data = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(transitO));
        request.ContentLength = data.Length;

        using (var stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }


        var response = (HttpWebResponse)request.GetResponse();

        var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

以下是代码中引用的对象:


    public class Destination
    {
        public string address { get; set; }
    }

    public class Origin
    {
        public string address { get; set; }
    }

    public class TransitObject
    {
        public Origin origin { get; set; }
        public Destination destination { get; set; }
        public string travelMode { get; set; }
        public System.DateTime departureTime { get; set; }
        public bool computeAlternativeRoutes { get; set; }
        public TransitPreferences transitPreferences { get; set; }
    }

    public class TransitPreferences
    {
        public string routingPreference { get; set; }
        public List<string> allowedTravelModes { get; set; }
    }

当我今天运行它时,它返回空 {}

有谁知道为什么这会突然停止工作?我在 Google API 文档中找不到任何建议更新或更改的内容,这些更新或更改会导致它突然返回 {}

提前致谢

我检查了我的 google api 账单,余额良好。 我尝试过改变不同的领域,但没有成功。 上面的代码最后一次确认有效是在大约一个月前。

c# .net google-routes-api
1个回答
0
投票

好吧,我明白了,但我将留下问题并设置答案以帮助其他错过它的人。

Google 将简单地返回 200 空,没有太多帮助,但我意识到出发时间是硬编码的,需要设置为始终在未来,因为过去的旅行路线是空的。

我现在已经编写了一些代码来生成将来的出发时间,并且它再次工作了

© www.soinside.com 2019 - 2024. All rights reserved.