读取GRPC标头

时间:2019-05-28 14:29:34

标签: c# grpc

我正在通过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 个答案:

答案 0 :(得分:1)

您正在使用“ Foo”方法的同步版本,并且使用的是API的简化版本(=仅允许访问响应,并在出现错误时抛出RpcExceptions)。

如果您调用同一方法的异步版本(“ FooAsync”),您将获得一个可以访问所有调用详细信息(例如响应头)的调用对象。

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