java - How to capture exceptions on a REST client? - Stack Overflow



java - How to capture exceptions on a REST client? - Stack Overflow

Generally it's better to declare your method as returning a Response object instead of a user-defined type, and set the data as the entity. Then if you want to indicate that an exception has happened, you can just pass that exception as the entity of the Response you are returning.

e.g.

@GET  @Path("/foo")  public Response getFoo() {      try {          // do stuff          return Response.ok(someData).build();      } catch (Exception e) {          return Response.serverError().entity(e).build();      }  }

You'll notice that this way you don't ever end up actually throwing an exception out of your method, but rather return an explicit 500 response with an exception as the entity. This way you can still throw exceptions out of your code, but they'll be handled nicely.

EDIT

I'm not sure what your client wrapper code is doing, but you can pass the expected response data type into your call with the normal REST client:

    Client client = ClientBuilder.newClient();      WebTarget target = client.target("http://foo.com/foo");      String response = target.request().get(String.class);

or you can also pull it out of the Response using the readEntity() method:

    Client client = ClientBuilder.newClient();      WebTarget target = client.target("http://foo.com/foo");      Response response = target.request().get();      String entity = response.readEntity(String.class);

It sounds like what you need to do is check the return code, and then parse the entity as a either a WrapperTransmissaoRetorno or a WebApplicationException depending on what code was returned:

    Response response = client.transmitir(wrapperRecepcao);        if (response.getStatus() == Response.Status.OK.getStatusCode()) { // 200          WrapperTransmissaoRetorno retorno = response.readEntity(WrapperTransmissaoRetorno.class);          // do stuff      } else  if (response.getStatus() == Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()) { // 500          WebApplicationException e = response.readEntity(WebApplicationException.class);          // do stuff      } // etc for other response codes

Read full article from java - How to capture exceptions on a REST client? - Stack Overflow


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts