我访问此网站(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 - 找不到文件或目录。您正在寻找的资源 可能已被删除,更改名称或暂时 不可用。
你能帮忙吗?
答案 0 :(得分:1)
我也处于同样的境地。在一些R& 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。
有关更多详细信息,请访问以下链接。