千家信息网

ProtoBuf gRPC分析请求头怎么配置

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天小编给大家分享一下ProtoBuf gRPC分析请求头怎么配置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获
千家信息网最后更新 2026年11月03日ProtoBuf gRPC分析请求头怎么配置

今天小编给大家分享一下ProtoBuf gRPC分析请求头怎么配置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

ProtoBuf + gRPC 分析请求头

概念

Protobuf是Google protocol buffer的简称,是一种语言中立、平台无关、易于扩展的结构化数据序列化技术,可用于数据传输、存储等领域。 与Protoful类似的序列化技术还有XML、JSON、Thrift等,但Protoful更快、更小、更简单,且具备良好的兼容性。

目前经常运用在 安卓直播弹幕等业务场景中

配置请求头

方法1

只设置客户端请求时附带的header

类 io.grpc.stub.MetadataUtils,其中有个方法

@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1789")  public static > T attachHeaders(      T stub,      final Metadata extraHeaders) {    return stub.withInterceptors(newAttachHeadersInterceptor(extraHeaders));  }

**
自己封装后

private static > T attachHeaders(T stub, final Map headerMap) {    Metadata extraHeaders = new Metadata();    if (headerMap != null) {        for (String key : headerMap.keySet()) {            Metadata.Key customHeadKey = Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER);            extraHeaders.put(customHeadKey, headerMap.get(key));        }    }    return MetadataUtils.attachHeaders(stub, extraHeaders);}

**

方法2

支持设置客户端请求的header以及获取服务端返回结果中的header

  • 官方demo

  • 官方完整Demo

1. 设置拦截器

class HeaderClientInterceptor implements ClientInterceptor {    private static final String TAG = "HeaderClientInterceptor";    private Map mHeaderMap;    public HeaderClientInterceptor(Map headerMap) {        mHeaderMap = headerMap;    }    @Override    public  ClientCall interceptCall(MethodDescriptor method,                                                               CallOptions callOptions, Channel next) {        return new SimpleForwardingClientCall(next.newCall(method, callOptions)) {            @Override            public void start(Listener responseListener, Metadata headers) {                /* put custom header */                if (mHeaderMap != null) {                    for (String key : mHeaderMap.keySet()) {                        Metadata.Key customHeadKey = Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER);                        headers.put(customHeadKey, mHeaderMap.get(key));                    }                }                Logger.i(TAG, "header send to server:" + headers);                super.start(new SimpleForwardingClientCallListener(responseListener) {                    @Override                    public void onHeaders(Metadata headers) {                        /**                         * if you don't need receive header from server,                         * you can use {@link io.grpc.stub.MetadataUtils attachHeaders}                         * directly to send header                         */                        Logger.i(TAG, "header received from server:" + headers);                        super.onHeaders(headers);                    }                }, headers);            }        };    }}

_

2. 使用

Map headerMap = new HashMap<>();//...ClientInterceptor interceptor = new HeaderClientInterceptor(headerMap);//...ManagedChannel managedChannel = ManagedChannelBuilder.forAddress(host, port).usePlaintext(true).build();Channel channel = ClientInterceptors.intercept(managedChannel, interceptor);// then create stub here by this channel

**

所以

要实现添加header 那么必须实现 ClientInterceptor 接口类中的 interceptCall 的方法

  • 而且还要有一个 添加Header的具体方法

  • 不管 grpc 怎么混淆都离不开这种配置模式

例如这种
注意他们的类型,很明显这种情况可以快速推论

  • z1.c.v.p.a.d.b.f.a.a() 大概率就是混淆后的 interceptCall

  • z1.c.v.p.a.d.b.f.a.c() 是添加请求头的函数

以上就是"ProtoBuf gRPC分析请求头怎么配置"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

方法 配置 知识 篇文章 分析 内容 官方 客户 客户端 就是 序列 技术 数据 不同 很大 明显 良好 业务 兼容性 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 广州大一互联网络科技有限公司 互联网科技巨头监管 互联网巨头反垄断金融科技 北京互联网科技有限公司 华中科技大学互联网 壕鑫互联网络科技 北京三清互联网科技 宁波青枫互联网科技有限公司 中国的互联网科技企业的崛起 厦门比较好的科技互联网公司 互联网时代的科技公司 城市宝互联网科技有限公司 张召忠谈中国互联网科技 福建互联网展示科技馆设计 江苏互联网智能科技产品出厂价 互联网科技对化妆品行业 数字科技和互联网金融哪个好 互联网领先科技成果宣传视频 伍佰万互联网科技是干嘛的 河南云网互联网络科技有限公司 金融科技还是互联网 齐家互联网科技有限公司 互联网前沿科技 深圳卡尔迅互联网科技有限公司怎么样 随着互联网科技发展 佛山市翊博互联网络科技有限公司 华夏恒生科技与互联网科技 广州智享互联网科技 恒生科技互联网指数十大成分股
0