Android で gRPC通信 をする時に MetaData を使いたい!
gRPC on Androidの正しい新しい記事が少ない為書きました.
AndroidでgRPCを使っていて,MetaDataを使いたくなったら以下のように書くといいです.
keyがauthorization
のsession $sessionId
をMetadataに入れる例を示します.
UserServiceClient.kt
class UserServiceClient{
private val channel: ManagedChannel = ManagedChannelBuilder
.forAddress(BuildConfig.SERVER_URL, BuildConfig.PORT.toInt())
.useTransportSecurity()
.build()
private var userStub: UserServiceGrpc.UserServiceBlockingStub = UserServiceGrpc.newBlockingStub(channel)
suspend fun user(sessionId: String) = coroutineScope {
Metadata().apply {
put(Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER), "session $sessionId")
}.let {
// この,stubに代入してあげるのを忘れると積むので気をつけること!!
userStub = MetadataUtils.attachHeaders(userStub, it)
}
val createRequest = Users.GetCurrentUserRequest.newBuilder()
.build()
userStub.getCurrentUser(createRequest)
}
}
協力: @gedorinku ありがとうございます!!
Author And Source
この問題について(Android で gRPC通信 をする時に MetaData を使いたい!), 我々は、より多くの情報をここで見つけました https://qiita.com/Hunachi/items/3dd67c5c4ed15f3a37bc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .