我访问此网站(http://www.calgarytransit.com/survey/survey/realtim-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,但不确定如何使用它们。因此,我只是将URL粘贴到浏览器中,然后收到此错误消息:
服务器错误
404-找不到文件或目录。您正在寻找的资源 可能已被删除,名字更改或暂时 不可用。
您可以帮忙吗?
我也处于同样的情况。经过一些R& D之后,我了解了协议缓冲区。然后,我在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-net,用于Protobuf和GTFSRealTimeBindings for FeedMessage。
有关更多详细信息,请访问以下链接。
- http://www.c-sharpcorner.com/article/serialization-andialization-and-deserialization-ib-c-sharp-using-protobuf-dll/
- https://developers.google.com/transit/gtfs-realtime/examples/dotnet-sample
- https://developers.google.com/transit/gtfs-realtime/gtfs-realtime-proto
- http://www.codeguru.com/columns/dotnet/working-with-google-protocol-buffers-buffers-buffers-buffers-and-.net.html