当前位置: 首页 > 知识库问答 >
问题:

gRPCAndroid客户端异常io。grpc。StatusRuntimeException:不可用

凌善
2023-03-14

我有一个GO服务器在本地运行tcp://localhost:50051和反应本机模块Android/iOS。

iOS模块工作正常,当我尝试使用android虚拟设备时,会引发以下异常。

    io.grpc.StatusRuntimeException: UNAVAILABLE
                          at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:230)
                          at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:211)
                          at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:144)
                          at 
... callig my stub method ...
                          at android.os.AsyncTask$2.call(AsyncTask.java:333)
        I/System.out:     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                          at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
                          at java.lang.Thread.run(Thread.java:764)
                      Caused by: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 50051) from /:: (port 51916): connect failed: ECONNREFUSED (Connection refused)
                          at libcore.io.IoBridge.connect(IoBridge.java:138)
                          at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:129)
                          at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:356)
                          at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
                          at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
                          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
                          at java.net.Socket.connect(Socket.java:616)
                          at java.net.Socket.connect(Socket.java:565)
                          at java.net.Socket.<init>(Socket.java:445)
                          at java.net.Socket.<init>(Socket.java:248)
                          at io.grpc.okhttp.OkHttpClientTransport$1.run(OkHttpClientTransport.java:419)
                          at io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:154)
                        ... 3 more
                      Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
                          at libcore.io.Linux.connect(Native Method)
                          at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:126)
                          at libcore.io.IoBridge.connectErrno(IoBridge.java:152)
                          at libcore.io.IoBridge.connect(IoBridge.java:130)
                        ... 14 more

AVD在10.0.2.2:8081上运行。

共有1个答案

籍兴文
2023-03-14

在Android emulator上运行时,localhost是Android设备。您需要使用机器的IP/主机名。

 类似资料:
  • 我在HAproxy和客户端流式rpc java maven后面有一个grpc Nodejs服务器。 当我运行java客户端时,它返回一个错误: 伊奥。grpc。StatusRuntimeException:不可用:HTTP状态代码503无效内容类型:文本/html标题:元数据(:status=503,cache control=no cache,content type=text/html)数据-

  • 有可能从客户端向服务器抛出异常吗?我们有一个从服务器到客户端的开放流: 当我尝试这样的事情时: 我在客户端的StreamObserver.on错误中获得了异常,但在服务器端没有异常。

  • 我对使用OpenTelemetry非常陌生,并且刚刚尝试将其配置为将跟踪发送到我的Zipkin服务器。不幸的是,通过指定zipkin导出器详细信息来配置代理后,我可以在控制台中看到一个异常。我使用Petclic作为Spring Boot示例,并遵循了这里的文档https://github.com/open-telemetry/opentelemetry-java-instrumentation 下

  • 我有一个用。NET核心实现的gRPC服务器,我希望与运行在。NET Framework中的控制台应用程序联系。 我在发送请求时得到以下异常: rpc.core.rpcexception:'statuscode=“不可用”,detail=“DNS解析失败服务:https://localhost:5001”,debugexception=“grpc.core.internal.coreerrordet

  • 快速免责声明,我是非常新的gRPC和RPC一般,所以请有耐心 对等点列表、是在以前的rpc调用中构建的。 客户 服务器端实现,

  • 我有一个使用RESTEasy的简单客户端,如下所示: 服务器配置为在以及一条有用的信息。正在抛出一个。除了包装在中之外,我如何使捕获异常并以字符串形式返回响应的有用消息。我尝试了各种实现,但似乎都是正确的。上述代码从未调用。我错过了什么? 我目前的解决方法是使用,然后执行并将原始状态填充到响应实体中。这样我就避免了异常抛出。