Читать заголовки GRPC - PullRequest
0 голосов
/ 28 мая 2019

Я отправляю данные через GRPC, давайте назовем это IntegrationApi, вызывая метод Foo. Мне нужно прочитать значения заголовка из ответа (API, с которым я общаюсь, отправляет ограничивающие скорость заголовки).

Я использую https://www.nuget.org/packages/Grpc.Core/

var metaData = new Metadata();
metadata.Add(new Metadata.Entry("Authorization", $"Bearer {apiKey}"));
var channel = new Channel("url to endpoint", new SslCredentials());
var client = new IntegrationApi(channel);

var callOptions = new CallOptions()
.WithHeaders(metadata)
.WithDeadline(DateTime.UtcNow.AddSeconds(15))
.WithWaitForReady(false);

var response = client.Foo(req, options);

но response дает мне только свойства, основанные на файле Foo.proto.

Как мне это сделать?

1 Ответ

1 голос
/ 04 июня 2019

Вы используете синхронную версию метода "Foo", которая использует упрощенную версию API (= только разрешает доступ к ответу и выдает исключения RpcException в случае ошибки).

ЕслиВы вызываете асинхронную версию того же метода («FooAsync»), вы получаете объект вызова, который может получить доступ ко всем деталям вызова (например, заголовкам ответа).

https://github.com/grpc/grpc/blob/044a8e29df4c5c2716c7e8250c6b2585e1c425ff/src/csharp/Grpc.Core.Api/AsyncUnaryCall.cs#L73

...