java - android studio 和 Java 服务器之间的通信。问题 GRPC
问题描述
我需要在 android studio 应用程序和 java 服务器之间建立通信,我尝试了 XMLRPC 但它不起作用,我目前正在尝试 GRPC 但不明白如何从 android studio 上的 proto 文件生成代码。
这是我在服务器端的代码,
public class HelloWorldServer extends HelloServiceGrpc.HelloServiceImplBase {
@Override
public void hello( HelloRequest request, StreamObserver<HelloResponse> responseObserver){
String greeting = new StringBuilder()
.append("Hello, ")
.append(request.getFirstName())
.append(" ")
.append(request.getLastName())
.toString();
HelloResponse response = HelloResponse.newBuilder()
.setGreeting(greeting)
.build();
responseObserver.onNext(response);
responseObserver.onCompleted();
}
任何想法 ?
解决方案
如果您查看gRPC 存储库中的hello world 示例,代码生成是由protobuf-gradle-plugin完成的
apply plugin: 'com.google.protobuf'
...
protobuf {
protoc { artifact = 'com.google.protobuf:protoc:3.12.0' }
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.34.0-SNAPSHOT' // CURRENT_GRPC_VERSION
}
}
generateProtoTasks {
all().each { task ->
task.builtins {
java { option 'lite' }
}
task.plugins {
grpc { // Options added to --grpc_out
option 'lite'
}
}
}
}
}
在示例中,proto 文件被放入src/main/proto
,这是插件将拾取的源 proto 文件的默认位置(或更正式地说,SourceDirectorySet)。
应用 protobuf-gradle-plugin 会自动将 gradle 任务添加到为您生成代码的构建中。生成的代码也将由插件提供给 Java 编译。所以你基本上不需要手动做任何事情。您可以在其README中找到有关该插件如何工作的更多信息。
推荐阅读
- wso2 - WSO2 IS 5.3.0 - 租户的管理员用户可以被锁定/禁用吗?
- asp.net - IIS 上的随机 500 错误
- reporting-services - 在 SSRS 中的查找中格式化字段
- dynamics-crm - CRM 2013 重新排序站点地图功能区中的实体
- .net-core - dotnet core webapi调用.net webapi2
- hash - 将 CRC32 值理解为除法余数
- docker - 在 macOS 上运行时,如何让 GitLab Runner 停止像 Linux 一样运行?
- json - 如何定义模式任意 JSON 对象?
- python-3.x - pandas 基于分布的系列抽样
- android - Android 和 iOS 中的 Nativescript 并发和低延迟音频