java - Access HTTP response when using Jersey client proxy -
i'm using jersey 2.22 consume rest api. approach contract-first, service interface , wrappers used call rest api (using org.glassfish.jersey.client.proxy package).
webclient webclient = clientbuilder.newclient();
webtarget webtarget = webclient.getwebtarget(endpoint);
serviceclass proxy = webresourcefactory.newresource(serviceclass.class, webtarget);
object returnedobject = proxy.servicemethod("id1");
the question is: how underlying http response (http status + body)?
 when returnedobject null, need analyze response error message returned example. there way it?
 saw can plug filters , interceptors catch response, that's not need.
you should return response result of interface method instead of plain dto.
i'm not sure level of control you're expecting (considering reply @peeskillet comment), response object give opportunity fine tune server's response (headers, cookies, status etc.) , read of them @ client side - might see taking @ response's members getstatus() , getheaders().
the gotcha here how body. this, i'd tell use readentity(class<t>) (not getentity() method 1 might try @ first). long have right media type provider registered, can extract entity dto class in easy way.
for example, if using maven, jersey , json media type, can add following dependency (and take provider's registration granted):
<dependency>     <groupid>org.glassfish.jersey.media</groupid>     <artifactid>jersey-media-json-jackson</artifactid> </dependency> then, entity body deserialized using:
response resp = proxy.servicemethod("id1"); int status = resp.getstatus(); string statustext = resp.getstatusinfo(); string someheader = resp.getheaderstring("some-header"); yourcustomdto obj = resp.readentity(yourcustomdto.class); when querying list of custom objects (i.e. method returns json array) use array type read body.
response resp = proxy.servicemethodthatreturnscollection(); yourcustomdto[] obj = resp.readentity(yourcustomdto[].class); please notice after reading body, stream closed , trying getentity() may throw exception.
hope helps.
Comments
Post a Comment