GrpcResponseMetadata provides a mechanism to access the headers and trailers returned by a gRPC
client method.
NOTE: the GrpcResponseMetadata class is not thread-safe and should NOT be re-used for multiple
calls. A new instance of GrpcResponseMetadata should be constructed for each call that requires
metadata to be accessed.
Constructs a new call context from an existing ApiCallContext, and sets the CallOptions to add
handlers to retrieve the headers and trailers, and make them available via the getMetadata and
getTrailingMetadata methods.
Constructs a new call context and sets the CallOptions to add handlers to retrieve the headers
and trailers, and make them available via the getMetadata and getTrailingMetadata methods.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThis page provides documentation for the \u003ccode\u003eGrpcResponseMetadata\u003c/code\u003e class in the Google API Client Library for Java, specifically within the \u003ccode\u003ecom.google.api.gax.grpc\u003c/code\u003e package, which is currently at version 2.63.1.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eGrpcResponseMetadata\u003c/code\u003e allows developers to access headers and trailers returned by gRPC client methods, but it is not thread-safe and should not be reused across multiple calls.\u003c/p\u003e\n"],["\u003cp\u003eThe class offers methods such as \u003ccode\u003egetMetadata()\u003c/code\u003e and \u003ccode\u003egetTrailingMetadata()\u003c/code\u003e to retrieve the headers and trailers, respectively, and \u003ccode\u003ecreateContextWithHandlers()\u003c/code\u003e to facilitate context creation for retrieving metadata, with \u003ccode\u003eaddHandlers()\u003c/code\u003e allowing for the same to be added to existing contexts.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eGrpcResponseMetadata\u003c/code\u003e implements the \u003ccode\u003eResponseMetadataHandler\u003c/code\u003e interface, and it provides the \u003ccode\u003eonHeaders\u003c/code\u003e and \u003ccode\u003eonTrailers\u003c/code\u003e methods to handle headers and trailers returned by an RPC, respectively.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation shows a history of versions, from 2.63.1 down to 2.7.1, and includes links to specific javadoc for each of these versions.\u003c/p\u003e\n"]]],[],null,["# Class GrpcResponseMetadata (2.69.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.69.0 (latest)](/java/docs/reference/gax/latest/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.68.2](/java/docs/reference/gax/2.68.2/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.67.0](/java/docs/reference/gax/2.67.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.66.0](/java/docs/reference/gax/2.66.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.65.0](/java/docs/reference/gax/2.65.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.63.1](/java/docs/reference/gax/2.63.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.62.0](/java/docs/reference/gax/2.62.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.61.0](/java/docs/reference/gax/2.61.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.60.0](/java/docs/reference/gax/2.60.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.59.1](/java/docs/reference/gax/2.59.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.58.0](/java/docs/reference/gax/2.58.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.57.0](/java/docs/reference/gax/2.57.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.55.0](/java/docs/reference/gax/2.55.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.54.1](/java/docs/reference/gax/2.54.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.53.0](/java/docs/reference/gax/2.53.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.52.0](/java/docs/reference/gax/2.52.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.51.0](/java/docs/reference/gax/2.51.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.50.0](/java/docs/reference/gax/2.50.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.49.0](/java/docs/reference/gax/2.49.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.48.1](/java/docs/reference/gax/2.48.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.47.0](/java/docs/reference/gax/2.47.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.46.1](/java/docs/reference/gax/2.46.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.45.0](/java/docs/reference/gax/2.45.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.43.0](/java/docs/reference/gax/2.43.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.42.0](/java/docs/reference/gax/2.42.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.41.0](/java/docs/reference/gax/2.41.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.39.0](/java/docs/reference/gax/2.39.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.38.0](/java/docs/reference/gax/2.38.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.37.0](/java/docs/reference/gax/2.37.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.36.0](/java/docs/reference/gax/2.36.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.35.0](/java/docs/reference/gax/2.35.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.34.1](/java/docs/reference/gax/2.34.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.33.0](/java/docs/reference/gax/2.33.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.32.1](/java/docs/reference/gax/2.32.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.31.1](/java/docs/reference/gax/2.31.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.30.1](/java/docs/reference/gax/2.30.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.24.0](/java/docs/reference/gax/2.24.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.23.3](/java/docs/reference/gax/2.23.3/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.22.0](/java/docs/reference/gax/2.22.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.21.0](/java/docs/reference/gax/2.21.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.20.1](/java/docs/reference/gax/2.20.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.19.6](/java/docs/reference/gax/2.19.6/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.18.7](/java/docs/reference/gax/2.18.7/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.17.0](/java/docs/reference/gax/2.17.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.16.0](/java/docs/reference/gax/2.16.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.15.0](/java/docs/reference/gax/2.15.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.14.0](/java/docs/reference/gax/2.14.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.13.0](/java/docs/reference/gax/2.13.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.12.2](/java/docs/reference/gax/2.12.2/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.11.0](/java/docs/reference/gax/2.11.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.10.0](/java/docs/reference/gax/2.10.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.9.0](/java/docs/reference/gax/2.9.0/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.8.1](/java/docs/reference/gax/2.8.1/com.google.api.gax.grpc.GrpcResponseMetadata)\n- [2.7.1](/java/docs/reference/gax/2.7.1/com.google.api.gax.grpc.GrpcResponseMetadata) \n\n public class GrpcResponseMetadata implements ResponseMetadataHandler\n\nGrpcResponseMetadata provides a mechanism to access the headers and trailers returned by a gRPC\nclient method.\n\nNOTE: the GrpcResponseMetadata class is not thread-safe and should NOT be re-used for multiple\ncalls. A new instance of GrpcResponseMetadata should be constructed for each call that requires\nmetadata to be accessed.\n\nExample usage: \n\n \n GrpcResponseMetadata grpcResponseMetadata = new GrpcResponseMetadata();\n Foo foo = client.getFooCallable().call(getFooRequest, grpcResponseMetadata.createContextWithHandlers());\n Metadata headers = grpcResponseMetadata.getMetadata();\n Metadata trailers = grpcResponseMetadata.getTrailingMetadata();\n \n \nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e GrpcResponseMetadata \n\nImplements\n----------\n\n[ResponseMetadataHandler](/java/docs/reference/gax/latest/com.google.api.gax.grpc.ResponseMetadataHandler) \n\nInherited Members\n-----------------\n\n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nConstructors\n------------\n\n### GrpcResponseMetadata()\n\n public GrpcResponseMetadata()\n\nMethods\n-------\n\n### addHandlers(ApiCallContext apiCallContext)\n\n public GrpcCallContext addHandlers(ApiCallContext apiCallContext)\n\nConstructs a new call context from an existing ApiCallContext, and sets the CallOptions to add\nhandlers to retrieve the headers and trailers, and make them available via the getMetadata and\ngetTrailingMetadata methods.\n\n### createContextWithHandlers()\n\n public GrpcCallContext createContextWithHandlers()\n\nConstructs a new call context and sets the CallOptions to add handlers to retrieve the headers\nand trailers, and make them available via the getMetadata and getTrailingMetadata methods.\n\n### getMetadata()\n\n public Metadata getMetadata()\n\nReturns the headers from the gRPC method as Metadata. If the call has not completed, will\nreturn null.\n\n### getTrailingMetadata()\n\n public Metadata getTrailingMetadata()\n\nReturns the trailers from the gRPC method as Metadata. If the call has not completed, will\nreturn null.\n\n### onHeaders(Metadata metadata)\n\n public void onHeaders(Metadata metadata)\n\nHandle the headers returned by an RPC.\n\n### onTrailers(Metadata metadata)\n\n public void onTrailers(Metadata metadata)\n\nHandle the trailers returned by an RPC."]]