public void run() { try { Socket socket = new Socket(host.getHostName(), host.getPort()); conn.bind(socket, params); // build request BasicHttpRequest request; if (!this.getRequest().getBody().isEmpty()) { request = new BasicHttpEntityEnclosingRequest( this.getRequest().getMethod(), this.getRequest().getPath()); } else { request = new BasicHttpRequest(this.getRequest().getMethod(), this.getRequest().getPath()); } // add headers Map<String, String> headers = this.getRequest().getHeaders(); Iterator<Map.Entry<String, String>> it = headers.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> pairs = it.next(); request.addHeader(pairs.getKey(), pairs.getValue()); } // set body if (request instanceof BasicHttpEntityEnclosingRequest) { StringEntity body = new StringEntity(this.getRequest().getBody()); ((BasicHttpEntityEnclosingRequest) request).setEntity(body); } logger.info("> " + request.getRequestLine().getUri()); // request request.setParams(params); httpexecutor.preProcess(request, httpproc, context); HttpResponse response = httpexecutor.execute(request, conn, context); response.setParams(params); httpexecutor.postProcess(response, httpproc, context); logger.info("< " + response.getStatusLine()); // set all request headers Header[] allHeaders = request.getAllHeaders(); for (int i = 0; i < allHeaders.length; i++) { this.getRequest().setHeader(allHeaders[i].getName(), allHeaders[i].getValue()); } // create response String content = ""; HttpEntity entity = response.getEntity(); if (entity != null) { content = EntityUtils.toString(entity); } this.response = new Response(response, content); // call callback callback.onResponse(this.request, this.response); } catch (Exception e) { Aletheia.handleException(e); } finally { try { conn.close(); } catch (Exception e) { Aletheia.handleException(e); } } }