package thredds.tds; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.params.AllClientPNames; import ucar.nc2.util.IO; import java.io.IOException; import java.io.InputStream; import java.util.concurrent.Callable; /** * _more_ * * @author edavis * @since 4.1 */ public class MakeHttpRequestCallable implements Callable<MakeHttpRequestResult> { private HttpClient httpClient; private String reqUrl; private MakeHttpRequestResult result; MakeHttpRequestCallable( HttpClient httpClient, String reqUrl, int reqNumber ) { this.httpClient = httpClient; this.reqUrl = reqUrl; result = new MakeHttpRequestResult( reqNumber, reqUrl); } public MakeHttpRequestResult call() throws Exception { long start = System.nanoTime(); try { send(); long took = System.nanoTime() - start; result.setResponseTimeInMilliseconds( took / 1000 / 1000); } catch ( Throwable t ) { result.setFailed( true); result.setFailMessage( t.getMessage()); } return result; } void send() throws IOException { HttpGet method = null; try { method = new HttpGet( reqUrl ); method.getParams().setParameter(AllClientPNames.HANDLE_REDIRECTS,true); HttpResponse response = httpClient.execute(method); result.setStatusCode(response.getStatusLine().getStatusCode()); InputStream is = response.getEntity().getContent(); //versus InputStream is = method.getResponseBodyAsStream(); if ( is != null ) result.setBytesRead( IO.copy2null(is, 10 * 1000 )); // read data and throw away //versus result.setBytesRead( IO.copy2null( method.getResponseBodyAsStream(), 10 * 1000 )); // read data and throw away } finally { if ( method != null ) method.releaseConnection(); } } }