Protobuf GTFS неверный проводной тип реального времени - PullRequest
0 голосов
/ 27 января 2019

Я построил свои классы c # с помощью инструмента на https://protogen.marcgravell.com/ из файла gtfs-realtime.proto на https://developers.google.com/transit/gtfs-realtime/gtfs-realtime.proto

Я извлекаю фид из http://transitfeeds.com/p/king-county-metro/445/source, используяниже:

WebRequest request = WebRequest.Create("http://transitfeeds.com/p/king-county-metro/445/source");
FeedMessage feed = Serializer.Deserialize<FeedMessage>(request.GetResponse().GetResponseStream());

, но я столкнулся с недопустимым проводным типом - не могу, на мой взгляд, понять, что не так, классы обновлены из последнего прото-файла - существуют ли проблемы при запросеприходит с URL?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Существует два разных формата в protobuf; оригинальный формат был двоичным. Позже была добавлена ​​вторичная кодировка JSON, которая работает с тем же DSL. Но, будучи JSON, он намного менее эффективен, чем двоичный формат по умолчанию.

Теперь; protobuf-net реализует только двоичное кодирование. Он выглядит как ваш фид в формате JSON, в этом случае он не будет хорошо работать с protobuf-net.

Реализация google поддерживает как двоичный, так и JSON-формат, если это помогает (protobuf-net - это просто отдельная реализация спецификации protobuf).

0 голосов
/ 27 января 2019

http://transitfeeds.com/p/king-county-metro/445/source представляет собой простой текстовый снимок канала GTFS-RT, но инструмент ожидает фактический канал Protobuf GTFS-RT.

В этом случае похоже, что вынеобходимо запросить ключ API у SoundTransit , чтобы использовать исходный канал.

...