code: protected ClientResponse doPostForProxy(String path, InputStream inputStream, MultivaluedMap<String, String> parameterMap, MultivaluedMap<String, String> headers) throws ClientException {
          this.readLock.lock();
          try {
              WebResource.Builder requestBuilder = getResourceWrapper().rewritten(path, HttpMethod.POST, parameterMap).getRequestBuilder();
              copyHeaders(headers, requestBuilder);
              return requestBuilder.post(ClientResponse.class, inputStream);
          } catch (ClientHandlerException ex) {
              throw new ClientException(ClientResponse.Status.INTERNAL_SERVER_ERROR, ex.getMessage());
          } finally {
              this.readLock.unlock();
          }
      }
docs: Passes a new resource, form or other POST body to a proxied server.
  
  @param path the path to the resource. Cannot be <code>null</code>.
  @param inputStream the contents of the POST body. Cannot be
  <code>null</code>.
  @param parameterMap query parameters. May be <code>null</code>.
  @param headers any request headers to add. May be <code>null</code>.
  
  @return ClientResponse the proxied server's response information.
  
  @throws ClientException if the proxied server responds with an "error"
  status code, which is dependent on the server being called.
  @see #getResourceUrl() for the URL of the proxied server.