}
public void run() {
HttpResponse response = null;
DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
String hostname = targetHost.getHostName();
int port = targetHost.getPort();
if (port == -1) {
port = 80;
}
// Populate the execution context
this.context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
this.context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.targetHost);
this.context.setAttribute(ExecutionContext.HTTP_REQUEST, this.request);
stats.start();
request.setParams(new DefaultedHttpParams(new BasicHttpParams(), this.params));
for (int i = 0; i < count; i++) {
try {
resetHeader(request);
if (!conn.isOpen()) {
Socket socket = null;
if ("https".equals(targetHost.getSchemeName())) {
SocketFactory socketFactory = SSLSocketFactory.getDefault();
socket = socketFactory.createSocket(hostname, port);
} else {
socket = new Socket(hostname, port);
}
conn.bind(socket, params);
}
try {
// Prepare request
this.httpexecutor.preProcess(this.request, this.httpProcessor, this.context);
// Execute request and get a response
response = this.httpexecutor.execute(this.request, conn, this.context);
// Finalize response
this.httpexecutor.postProcess(response, this.httpProcessor, this.context);
} catch (HttpException e) {
stats.incWriteErrors();
if (this.verbosity >= 2) {
System.err.println("Failed HTTP request : " + e.getMessage());
}
continue;
}
verboseOutput(response);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
stats.incSuccessCount();
} else {
stats.incFailureCount();
continue;
}
HttpEntity entity = response.getEntity();
String charset = EntityUtils.getContentCharSet(entity);
if (charset == null) {
charset = HTTP.DEFAULT_CONTENT_CHARSET;
}
long contentlen = 0;
if (entity != null) {
InputStream instream = entity.getContent();
int l = 0;
while ((l = instream.read(this.buffer)) != -1) {
stats.incTotalBytesRecv(l);
contentlen += l;
if (this.verbosity >= 4) {
String s = new String(this.buffer, 0, l, charset);
System.out.print(s);
}
}
instream.close();
}
if (this.verbosity >= 4) {
System.out.println();
System.out.println();
}
if (!keepalive || !this.connstrategy.keepAlive(response, this.context)) {
conn.close();
}
stats.setContentLength(contentlen);
} catch (IOException ex) {
ex.printStackTrace();
stats.incFailureCount();
if (this.verbosity >= 2) {
System.err.println("I/O error: " + ex.getMessage());
}
}
}
stats.finish();
if (response != null) {
Header header = response.getFirstHeader("Server");
if (header != null) {
stats.setServerName(header.getValue());
}
}
try {
conn.close();
} catch (IOException ex) {
ex.printStackTrace();
stats.incFailureCount();
if (this.verbosity >= 2) {
System.err.println("I/O error: " + ex.getMessage());