code: protected Response executeRequest(Request request)
      {
          try
          {
              com.squareup.okhttp.Request httpRequest = buildHttpRequest(request);
  
              if(logger.isInfoEnabled())
                  logger.info("Sending request: {} {}",httpRequest.method(),httpRequest.urlString());
  
              if(logger.isDebugEnabled() && request.getRequestMethod().isBodyRequest())
              {
                  Buffer buffer = new Buffer();
                  httpRequest.body().writeTo(buffer);
                  if(maxLoggedBodySize == -1 || buffer.size() <= maxLoggedBodySize )
                      logger.debug("Request body: {}", buffer.readUtf8());
                  else
                      logger.debug("Request body not captured: too large. ");
              }
  
              if(logger.isTraceEnabled())
                  logger.trace("Request headers: {}",httpRequest.headers().toString());
  
              Response response = client.newCall(httpRequest).execute();
  
              if(response.code() == HttpURLConnection.HTTP_UNAUTHORIZED && authorizationFactory != null
                      && authorizationFactory.retryOnAuthenticationError())
              {
                  if(authorizationFactory instanceof ResettableAuthorizationFactory)
                      ((ResettableAuthorizationFactory) authorizationFactory).reset();
  
                  response = client.newCall(httpRequest).execute();
              }
  
              logger.info("Response code: {}",response.code());
  
              if(logger.isTraceEnabled())
                  logger.trace("Response headers: {}",response.headers().toString());
  
              if(logger.isDebugEnabled())
              {
                  ByteArrayOutputStream copy = new ByteArrayOutputStream();
                  copy(response.body().byteStream(),copy);
                  response = response.newBuilder().body(ResponseBody.create(response.body().contentType(),copy.toByteArray())).build();
  
                  if(maxLoggedBodySize == -1 || copy.size() <= maxLoggedBodySize)
                      logger.debug("Response body: {}",copy.toString());
                  else
                      logger.debug("Response body not captured: too large.");
              }
              if (response.code() >= HttpURLConnection.HTTP_BAD_REQUEST)
              {
                  throw readException(response);
              }
  
              return response;
          }
          catch (IOException e)
          {
              throw new ClientConnectionException("Error calling service.",e);
          }
  
      }
docs: Execute the request
  @param request The data service request
  @return The HTTP response