私はアンドロイドgrpcクライアントでカスタムヘッダーを追加する必要があります。私はそれを正常に送信することができません。Android grpc clientにカスタムヘッダーを追加するには?
public class HeaderClientInterceptor implements ClientInterceptor {
@Override
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(MethodDescriptor<ReqT, RespT> method,
CallOptions callOptions, Channel next) {
return new SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {
@Override
public void start(Listener<RespT> responseListener, Metadata headers) {
/* put custom header */
Timber.d("header sending to server:");
Metadata fixedHeaders=new Metadata();
Metadata.Key<String> key =
Metadata.Key.of("Grps-Matches-Key", Metadata.ASCII_STRING_MARSHALLER);
fixedHeaders.put(key, "primary.secondary");
headers.merge(fixedHeaders);
super.start(new SimpleForwardingClientCallListener<RespT>(responseListener) {
@Override
public void onHeaders(Metadata headers) {
/**
* if you don't need receive header from server,
* you can use {@link io.grpc.stub.MetadataUtils attachHeaders}
* directly to send header
*/
Timber.e("header received from server:" + headers.toString());
super.onHeaders(headers);
}
}, headers);
}
};
}
}
編集:私はこのような呼び出しています私のgrpc呼び出し、
ClientInterceptor interceptor = new HeaderClientInterceptor();
Channel channel = ManagedChannelBuilder
.forAddress(BuildConfig.HOST, BuildConfig.PORT)
.build();
Channel channelWithHeader = ClientInterceptors
.intercept(channel, interceptor);
ServiceGrpc.ServiceBlockingStub service = ServiceGrpc
.newBlockingStub(channelWithHeader);
に成功し
さて、このように使用してカスタムヘッダーを追加しました///私は上記の要求を構築し、以下のように擬似呼び出しで呼び出します。
Iterator<Model> dataItems = service.getItems(SOMERequestBuilderObj);
I am trying to add a custom header like this -
"のGRP-マッチキー:primary.secondary" 私のようなヘッダーとしてこれを追加しているでしょうREST APIの呼び出しで
、 builder.header(「GRPS-Matches- Key "、" primary.secondary ");
これが役に立ちます。