我尝试将 Scala 与插件“com.thesamet.scalapb.zio-grpc”%%“zio-grpc-codegen”%“0.6.0-test1”一起用于调用 gRPC 服务 TINKOFF INVEST API。一切都很好,我 hava 从 *.proto 文件生成了 ZIO 代码。接下来我想要调用货币方法和输出货币列表
package app
import io.grpc.{CallOptions, ManagedChannelBuilder}
import ru.tinkoff.piapi.contract.v1.instruments.InstrumentStatus.INSTRUMENT_STATUS_BASE
import zio.Console._
import ru.tinkoff.piapi.contract.v1.instruments.{InstrumentsRequest}
import ru.tinkoff.piapi.contract.v1.instruments.ZioInstruments.InstrumentsService
import scalapb.zio_grpc.ZManagedChannel
import zio._
import java.util.concurrent.TimeUnit
import scala.language.existentials
object main extends zio.ZIOAppDefault {
final def run :URIO[Console,ExitCode] =
myAppLogic.exitCode
val token: String = "xx"
val manChannelBuilder = ManagedChannelBuilder.forAddress("invest-public-api.tinkoff.ru", 443)
manChannelBuilder.useTransportSecurity()
manChannelBuilder.keepAliveTime(10L, TimeUnit.SECONDS)
val channel = ZManagedChannel(manChannelBuilder)
val optSrc: CallOptions = CallOptions.DEFAULT
.withAuthority("Bearer "+token)
val opt: zio.IO[io.grpc.Status, io.grpc.CallOptions] = IO.succeed(optSrc)
val instrManaged: Managed[Throwable, InstrumentsService] =
InstrumentsService.managed(managedChannel = channel,options = opt)
val myAppLogic = for {
_ <- printLine("Begin myAppLogic")
res <- instrManaged.use(
client =>
client.withTimeoutMillis(3000).currencies {
InstrumentsRequest(
instrumentStatus = INSTRUMENT_STATUS_BASE
)
}.mapError(_.asRuntimeException())
)
_ <- printLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
_ = res.instruments.foreach(instr => printLine(instr.name))
_ <- printLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
_ <- printLine("End myAppLogic")
} yield res
}
和输出,当我运行它(没有错误或警告):
14:59:28.098 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND SETTINGS: ack=false settings={ENABLE_PUSH=0, MAX_CONCURRENT_STREAMS=0, INITIAL_WINDOW_SIZE=1048576, MAX_HEADER_LIST_SIZE=8192}
14:59:28.100 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND WINDOW_UPDATE: streamId=0 windowSizeIncrement=983041
14:59:28.263 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND SETTINGS: ack=false settings={MAX_CONCURRENT_STREAMS=100, MAX_FRAME_SIZE=65536}
14:59:28.264 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND SETTINGS: ack=true
14:59:28.276 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND SETTINGS: ack=true
14:59:28.282 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND HEADERS: streamId=3 headers=GrpcHttp2OutboundHeaders[:authority: Bearer xx, :path: /tinkoff.public.invest.api.contract.v1.InstrumentsService/Currencies, :method: POST, :scheme: https, content-type: application/grpc, te: trailers, user-agent: grpc-java-netty/1.46.0, grpc-accept-encoding: gzip, grpc-timeout: 1918903u] streamDependency=0 weight=16 exclusive=false padding=0 endStream=false
14:59:28.286 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND DATA: streamId=3 padding=0 endStream=true length=7 bytes=00000000020801
14:59:28.449 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND WINDOW_UPDATE: streamId=3 windowSizeIncrement=7
14:59:28.449 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND WINDOW_UPDATE: streamId=0 windowSizeIncrement=2147418119
14:59:28.452 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND HEADERS: streamId=3 headers=GrpcHttp2ResponseHeaders[:status: 400, content-length: 90, cache-control: no-cache, content-type: text/html] padding=0 endStream=false
14:59:28.465 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND DATA: streamId=3 padding=0 endStream=false length=90 bytes=3c68746d6c3e3c626f64793e3c68313e3430302042616420726571756573743c2f68313e0a596f75722062726f777365722073656e7420616e20696e76616c69...
14:59:28.465 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND PING: ack=false bytes=1234
14:59:28.467 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND DATA: streamId=3 padding=0 endStream=true length=0 bytes=
14:59:28.471 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND RST_STREAM: streamId=3 errorCode=8
14:59:28.513 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND GO_AWAY: lastStreamId=0 errorCode=0 length=0 bytes=
你能给我点建议吗?
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(7条)