Java gRPC客户端在连接到C#服务器时出错
我正在尝试制作一个安卓应用程序,连接到C#gRPC服务器。我是gRPC的新手,我正在努力学习。我在Visual Studio 19中创建了一个gRPC服务,我正在尝试在我的android应用程序中使用该服务中的greet proto文件。我写了一些代码来测试连接,但是我有一个eror。服务器是在visual studio中生成的默认gRPC服务。我的应用程序中的代码是这样的(不是最好的代码,但一旦它起作用,我将以适当的方式编写): 我收到的错误是:Java gRPC客户端在连接到C#服务器时出错,java,c#,android,grpc,Java,C#,Android,Grpc,我正在尝试制作一个安卓应用程序,连接到C#gRPC服务器。我是gRPC的新手,我正在努力学习。我在Visual Studio 19中创建了一个gRPC服务,我正在尝试在我的android应用程序中使用该服务中的greet proto文件。我写了一些代码来测试连接,但是我有一个eror。服务器是在visual studio中生成的默认gRPC服务。我的应用程序中的代码是这样的(不是最好的代码,但一旦它起作用,我将以适当的方式编写): 我收到的错误是: D/AndroidRuntime: Shutt
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.client, PID: 8877
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.client/com.example.client.MainScreen}: io.grpc.StatusRuntimeException: UNAVAILABLE: End of stream or IOException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: io.grpc.StatusRuntimeException: UNAVAILABLE: End of stream or IOException
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:262)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:243)
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:156)
at greet.GreeterGrpc$GreeterBlockingStub.sayHello(GreeterGrpc.java:176)
at com.example.client.MainScreen.onCreate(MainScreen.java:33)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
我设法用chrome浏览器从本地机器上用https://locahost:5001 并从我的模拟器使用。每次我尝试将浏览器连接到服务器时,控制台都会打印一些日志,因此我认为服务器不是问题所在
我发现了这篇文章:我认为这与我的实际问题有关,但我对TSL和gRPC都是新手。我唯一能想到的是,当我的客户机尝试使用纯文本连接时,服务器使用TSL,但我不知道如何检查这一点
我怎样才能找出问题所在
编辑:这是我的原型文件:
syntax = "proto3";
package greet;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply);
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings.
message HelloReply {
string message = 1;
}
syntax = "proto3";
package greet;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply);
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings.
message HelloReply {
string message = 1;
}