2017-05-03 2 views
0

Je me rends sur ce site Web (http://www.calgarytransit.com/survey/real-time-data-access) pour demander l'accès aux données en temps réel. Après avoir appliqué avec succès, j'ai reçu une réponse avec des URL d'accès comme ci-dessous:Comment utiliser - Accès aux données en temps réel du bus de transit

Merci de vous inscrire pour l'accès à nos données en temps réel. Vous pouvez accéder aux données Temps réel les liens suivants:

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

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

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

Je vois les urls avec l'extension .pb mais ne savez pas comment les utiliser. Donc, je colle simplement les urls dans un navigateur et je reçu ce message d'erreur:

Erreur serveur

404 - Fichier ou répertoire introuvable. La ressource que vous recherchez a peut-être été supprimée, son nom a été modifié ou elle est temporairement indisponible ( ).

Pouvez-vous s'il vous plaît aider?

Répondre

0

J'étais aussi dans la même situation. Après quelques R & D j'ai appris à connaître le tampon de protocole. Ensuite, j'ai créé une méthode en C# pour accéder à ces API. Je partage ma solution avec vous. Vous aurez certainement quelques conseils.
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);
Le code est en C#. Ici, je veux obtenir la réponse et désérialiser la réponse en utilisant ProtoBuff.Serializer. J'avais besoin de deux paquets Nuget pour ça. l'un est protobuf-net pour ProtoBuf et GtfsRealtimeBindings pour FeedMessage.
Pour plus de détails, visitez les liens suivants.

  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