如何使用 - Transit bus实时数据访问

时间:2017-05-03 17:12:01

标签: access real-time-data transit

我访问此网站(http://www.calgarytransit.com/survey/real-time-data-access)申请实时数据访问。成功申请后,我收到了如下访问网址的回复:

  

感谢您注册访问我们的实时数据。您可以   通过以下链接访问实时数据:

http://transitdata.calgary.ca/ctransit/tripupdates.pb

http://transitdata.calgary.ca/ctransit/alerts.pb

http://transitdata.calgary.ca/ctransit/vehiclepositions.pb

我看到扩展名为.pb的网址但不确定如何使用它们。所以我只是将网址粘贴到浏览器中,我收到了以下错误消息:

  

服务器错误

     

404 - 找不到文件或目录。您正在寻找的资源   可能已被删除,更改名称或暂时   不可用。

你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

我也处于同样的境地。在一些R&amp; D之后,我开始了解Protocol Buffer。然后我在C#中创建了一个方法来访问这些API。我和你分享我的解决方案。你一定会得到一些提示      string url = "<Your url>.pb"; HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(string.Format(url)); webReq.Method = "GET"; NetworkCredential networkCredential = new NetworkCredential("user_name", "password"); CredentialCache myCredentialCache = new CredentialCache { { new Uri(url), "Basic", networkCredential } }; webReq.PreAuthenticate = true; webReq.Credentials = myCredentialCache; HttpWebResponse webResponse = (HttpWebResponse)webReq.GetResponse(); Stream answer = webResponse.GetResponseStream(); StreamReader _recivedAnswer = new StreamReader(answer); FeedMessage message = ProtoBuf.Serializer.Deserialize<FeedMessage>(_recivedAnswer.BaseStream);
代码在C#中。在这里,我希望使用ProtoBuff.Serializer获取响应并反序列化响应。我需要两个Nuget包。一个是ProtoBuf的protobuf-net和FeedMessage的GtfsRealtimeBindings。
有关更多详细信息,请访问以下链接。

  1. http://www.c-sharpcorner.com/article/serialization-and-deserialization-ib-c-sharp-using-protobuf-dll/
  2. https://developers.google.com/transit/gtfs-realtime/examples/dotnet-sample
  3. https://developers.google.com/transit/gtfs-realtime/gtfs-realtime-proto
  4. http://www.codeguru.com/columns/dotnet/working-with-google-protocol-buffers-and-.net.html