【问题标题】:Read GRPC headers读取 GRPC 标头
【发布时间】:2019-05-28 14:29:33
【问题描述】:

我正在通过 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 文件的属性。

我该怎么做?

【问题讨论】:

    标签: c# grpc


    【解决方案1】:

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

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

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

    【讨论】:

    • true,将其更改为 FooAsync 后,我能够访问正确的标题。
    猜你喜欢
    • 2016-12-28
    • 2020-09-14
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    相关资源
    最近更新 更多