首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java / Kotlin中如何在StatusException之后从grpc的Status.details字段中获取数据?

在Java / Kotlin中如何在StatusException之后从grpc的Status.details字段中获取数据?
EN

Stack Overflow用户
提问于 2020-08-26 03:08:05
回答 1查看 644关注 0票数 1

我有grpc服务器。它会像推荐的there一样,在Status.details中发送丰富的错误

proto文件中描述的Ruch错误

代码语言:javascript
运行
复制
message Error {
  Code code = 1;
  // user friendly text
  string message = 2;
}

grpcurl响应:

代码语言:javascript
运行
复制
ERROR:
  Code: FailedPrecondition
  Message: device blocked
  Details:
  1)    {
          "@type": "type.googleapis.com/myapp.overall.v1.Error",
          "code": "CODE_DEVICE_BLOCKED",
          "message": "Выполнение операции невозможно тк вашего устройства отправляется слишком много запросов. Пожалуйста попробуйте еще раз чере 3 минуты"
        }

如何使用Kotlin / Java (Android)访问Status.details?

EN

回答 1

Stack Overflow用户

发布于 2020-08-26 04:21:21

您可以使用StatusProto.fromThrowable(Throwable)将其转换为google.rpc.Status原型:

代码语言:javascript
运行
复制
import io.grpc.protobuf.StatusProto;

com.google.rpc.Status status = StatusProto.fromThrowable(statusException);
for (Any any : status.getDetailsList()) {
  if (!any.is(Error.class)) {
    continue;
  }
  Error error = any.unpack(Error.class);
  // error is now available
}

您可以创建一个实用程序来减少该操作的冗长。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63585587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档