2017-05-03 16 views
0

私はこのウェブサイト(http://www.calgarytransit.com/survey/real-time-data-access)にアクセスしてリアルタイムデータアクセスを申請します。正常に適用された後、私は以下のようなアクセスURLを返信しました:使用方法 - トランジットバスリアルタイムデータアクセス

リアルタイムデータにアクセスしていただきありがとうございます。あなたは 以下のリンクでリアルタイムデータにアクセスすることができます。

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 - ファイルまたはディレクトリが見つかりません。 を探しているリソースが削除されたか、名前が変更されたか、一時的に が利用できませんでした。

助けてもらえますか?

答えて

0

私も同じ状況でした。いくつかのR & Dの後に私はプロトコルバッファについて知りました。次に、これらのAPIにアクセスするためにC#で1つのメソッドを作成しました。私はあなたと私の解決策を共有しています。あなたは間違いなくいくつかのヒントを得るでしょう。
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を使用して応答を非直列化したいと思います。私はこのために2つのNugetパッケージが必要でした。 1つは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