You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过grpcurl发送包含.google.protobuf.BytesValue的TestRequest请求?

使用grpcurl发送.google.protobuf.BytesValue类型参数的方法

.google.protobuf.BytesValue是Protobuf的包装类型,内部仅包含一个value字段(类型为bytes)。用grpcurl调用时,需要将目标字节数据做Base64编码后,嵌套在value字段中传入。

具体步骤与示例

假设你的gRPC服务地址为localhost:50051,服务全名为your.package.TestService,调用方法为TestMethod,以下是两种常见场景的实现:

1. 直接传入JSON字符串转字节的参数

如果TestJson字段需要传入的是{"name": "grpc-test"}这样的JSON字符串,先将该字符串转成Base64编码(示例编码结果为eyJuYW1lIjogImdycGMtdGVzdCJ9),然后构造请求体:

{
  "TestJson": {
    "value": "eyJuYW1lIjogImdycGMtdGVzdCJ9"
  },
  "Temp": "sample-temp-value"
}

对应的grpcurl命令:

grpcurl -d '{
  "TestJson": {
    "value": "eyJuYW1lIjogImdycGMtdGVzdCJ9"
  },
  "Temp": "sample-temp-value"
}' localhost:50051 your.package.TestService/TestMethod

2. 从二进制文件读取数据

如果需要传入的字节来自本地文件(比如data.json),先对文件内容做Base64编码:

  • Linux/macOS:
base64 data.json
  • Windows(需去掉输出中开头的-----BEGIN CERTIFICATE-----和结尾的-----END CERTIFICATE-----):
certutil -encode data.json temp.b64

将得到的Base64字符串填入请求体,或直接通过文件传递请求:
创建request.json文件,内容如下:

{
  "TestJson": {
    "value": "这里填入文件的Base64编码结果"
  },
  "Temp": "file-sample"
}

执行grpcurl命令:

grpcurl -d @ localhost:50051 your.package.TestService/TestMethod < request.json

关键注意点

  • Protobuf的bytes类型在JSON映射中强制要求用Base64编码,不能直接传入原始字符串或二进制数据。
  • 确保Base64编码结果没有多余的换行或空格,否则会导致参数解析失败。

内容的提问来源于stack exchange,提问作者Lava Sangeetham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:55:24