private void executeRequest() {
        HttpClient client = new HttpClient();
        HttpConnectionManagerParams hcManagerParams = client.getHttpConnectionManager().getParams();
        hcManagerParams.setConnectionTimeout(connectionOption.connectionTimeout);
        hcManagerParams.setSoTimeout(connectionOption.optTimeout);
        PostMethod post = new PostMethod(requestUrl);
        
        if (requestHeaders != null && !requestHeaders.isEmpty()) {
            Set<String> headerKeySet = requestHeaders.keySet();
            for (String headerKey : headerKeySet) {
                String headerValue = requestHeaders.get(headerKey);
                post.addRequestHeader(headerKey, headerValue);
            }
        }        
        
        post.setRequestEntity(new StringRequestEntity(requestBody));
        try { 
            responseCode = client.executeMethod(post);
            responseBody = post.getResponseBodyAsString();
            
            logger.info(responseBody);
            
            Header[] rspHeaders = post.getResponseHeaders();
            responseHeaders = new HashMap<String, String>();
            for (Header rspHeader : rspHeaders) {
                responseHeaders.put(rspHeader.getName(), rspHeader.getValue());
            }
        } catch (IOException ex) {
            logger.error(ex);
        }
    }