title: Retrofit 2.0 - How to get response body for 400 Bad Request error?
body: <p>So when I make a POST API call to my server, I get a 400 Bad Request error with JSON response.</p>
  
  <pre><code>{
      "userMessage": "Blah",
      "internalMessage": "Bad Request blah blah",
      "errorCode": 1
  }
  </code></pre>
  
  <p>I call it by </p>
  
  <pre><code>Call.enqueue(new Callback&lt;ResponseBody&gt;() {
      @Override
      public void onResponse(Call&lt;ResponseBody&gt; call, Response&lt;ResponseBody&gt; response) {
          //AA
      }
  
      @Override
      public void onFailure(Call&lt;ResponseBody&gt; call, Throwable t) {
          //BB
      }
  }
  </code></pre>
  
  <p>However the problem is that once I get the response, onFailure() is invoke so that //BB is called. Here, I have no way to access the JSON response.
  When I log the api request and response, it doesn't show JSON response at all. And Throwable t is IOException. However, strangely, when I make the same call on Postman, it does return the expected JSON response with 400 error code. </p>
  
  <p>So my question is how can I get the json response when I get 400 Bad Request error? Should I add something to okhttpclient?</p>
  
  <p>Thanks</p>