栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android gRPC 简单使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android gRPC 简单使用

gRPC 可以像调用方法一样进行网络请求
github地址:https://github.com/grpc/grpc-java

使用:

1.proto文件放置到 src/main/proto
2. 根目录gradle

        classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.17"
  1. module gradle配置
plugins {
...
    id 'com.google.protobuf'
}

android {
  ...
}

protobuf {
    protoc { artifact = 'com.google.protobuf:protoc:3.17.2' }
    plugins {
        grpc { artifact = 'io.grpc:protoc-gen-grpc-java:1.40.0' // CURRENT_GRPC_VERSION
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                java { option 'lite' }
            }
            task.plugins {
                grpc { // Options added to --grpc_out
                    option 'lite' }
            }
        }
    }
}

dependencies {
    //gRPC
    implementation 'io.grpc:grpc-okhttp:1.40.0' // CURRENT_GRPC_VERSION
    implementation 'io.grpc:grpc-protobuf-lite:1.40.0' // CURRENT_GRPC_VERSION
    implementation 'io.grpc:grpc-stub:1.40.0' // CURRENT_GRPC_VERSION
    compileonly 'org.apache.tomcat:annotations-api:6.0.53'

    implementation project(':common')
}
  1. 简单使用(伪代码)
	//创建channel
   ManagedChannel channel = ManagedChannelBuilder.forAddress(ip, port).usePlaintext().build();
   //创建阻塞请求服务
   ServiceBlockingStub serviceBlockingStub = ServiceGrpc.newBlockingStub(channel);
  //创建请求
   Request request = Request.newBuilder().build();
  //调用服务getData方法
   serviceBlockingStub.getData(request);
  1. stream接收(伪代码)
	//创建channel
   ManagedChannel channel = ManagedChannelBuilder.forAddress(ip, port).usePlaintext().build();
   //创建请求服务
   ServiceBlockingStub serviceBlockingStub = ServiceGrpc.newStub(channel);
  //创建请求
   Request request = Request.newBuilder().build();
  //调用服务getData方法, 并设置回调
   serviceBlockingStub.getData(request, new StreamObserver() {
                @Override
                public void onNext(Data data) {
                    Logger.e("Stream", "onNext");
                }

                @Override
                public void onError(Throwable t) {
                    Logger.e("Stream", "onError");
                }

                @Override
                public void onCompleted() {
                    Logger.e("Stream", "onCompleted");
                }
            });
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603478.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号