读取 GRPC 标头

w33*_*z33 2 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);
Run Code Online (Sandbox Code Playgroud)

response唯一给我的是基于文件的属性Foo.proto

我该怎么做呢?

Jan*_*sch 5

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

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

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