0
 @Override
    public void getResult(Request request, StreamObserver<Response> responseObserver) {
       responseObserver.onNext(new Respons("check"));
       responseObserver.onCompleted();
    }

how to send header response?

In golang I can send it by doing like this but in java I don't know

func (s *server) SomeRPC(ctx context.Context, in *pb.someRequest) (*pb.someResponse, error) {
    // create and send header
    header := metadata.Pairs("header-key", "val")
    grpc.SendHeader(ctx, header)
    // create and set trailer
    trailer := metadata.Pairs("trailer-key", "val")
    grpc.SetTrailer(ctx, trailer)
}
  • What are you wanting to send in a response header? Most metadata processing is best done in interceptors. – Eric Anderson Aug 27 '21 at 20:07
  • @EricAnderson I have one use case in which I want to send some encoded value in the response header on the server side is there any another way ? – Vishal Neekhra Aug 27 '21 at 20:15
  • You essentially just reworded "wanting to send something in a response header," without any further context. I'm asking for your use-case. What type of value is this and why does it need to go in the response headers? – Eric Anderson Aug 30 '21 at 16:57

1 Answers1

0

You can implemente ServerInterceptor and modify header in sendHeaders method like this:

public class CustomServerInterceptor implements ServerInterceptor {
    @Override
    public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) {
        CustomServerCall<ReqT, RespT> customServerCall = new CustomServerCall<>(call);
        ServerCall.Listener<ReqT> listener = next.startCall(customServerCall, headers);
        return new CustomServerCallListener<>(listener);
    }
}

class CustomServerCall<ReqT, RespT> extends ForwardingServerCall.SimpleForwardingServerCall<ReqT, RespT> {
    // ...
    @Override
    public void sendHeaders(Metadata headers) {
        // do what you want here
        super.sendHeaders(headers);
    }
}

class CustomServerCallListener<ReqT> extends ForwardingServerCallListener.SimpleForwardingServerCallListener<ReqT> {
// ...
}
HelloWood
  • 727
  • 4
  • 13