2017-05-03 54 views
0

我去这个网站(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但不知道如何使用它们的URL。所以,我只是粘贴到浏览器的网址,我得到这个错误信息:

服务器错误

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

你能帮忙吗?

回答

0

我也处于相同的情况。在一些R之后,我了解了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