Я не использую Callcredentials на данный момент с Grpc-java. Мне нужно пройти в несколько полей в заголовках для определенных вызовов. Я заполнил заголовки, как приведено ниже, и добавил перехватчик, который обращается при использовании асинхронной заглушки/канала. < /p>
Заполненный заголовок < /strong> < /p>
public Metadata generateHeader() {
Metadata.Key jwtKey = Metadata.Key.of("jwt", Metadata.ASCII_STRING_MARSHALLER);
headers.put(jwtKey, jwt);
Metadata.Key testKey = Metadata.Key.of("testID", Metadata.ASCII_STRING_MARSHALLER);
headers.put(testKey, testID);
return headers;
}
< /code>
Я получаю доступ в поле заголовков в виде переменной экземпляра, передаваемой в клиентский перехватчик. Я вижу, что заголовки содержат предполагаемое значение, пока оно не попадет в начальный вызов, после чего оно станет нулевым (я, очевидно, не вижу заголовков, заполненных на стороне сервера). Любые идеи, чтобы исправить это (или я должен использовать Callcredentials). Документация для GRPC-Java требует большой работы. < /p>
@Override
public ClientCall interceptCall(
MethodDescriptor method,
CallOptions callOptions,
Channel next) {
log.info("HEADER INTERCEPTOR{}", headers.get(Metadata.Key.of("jwt", Metadata.ASCII_STRING_MARSHALLER)));
ClientCall call = next.newCall(method, callOptions);
return new ForwardingClientCall.SimpleForwardingClientCall(call) {
@Override
public void start(ClientCall.Listener responseListener, Metadata headers) {
log.info("HEADER START {}", headers.keys());
super.start(responseListener, headers);
}
};
}
Подробнее здесь: https://stackoverflow.com/questions/427 ... nt-request