public static <T> Pair<T, HttpResponse> getFullResponse( Worker<T> worker, String url, Map<String, String> headers,
String user, String pass, final int readTimeout )
throws IOException {
DURL u = new DURL( url );
if ( !u.valid() ) {
return null;
}
DefaultHttpClient client = enableProxyUsage( new DefaultHttpClient(), u );
client.setKeepAliveStrategy( new DefaultConnectionKeepAliveStrategy() {
@Override
public long getKeepAliveDuration( HttpResponse response, HttpContext context ) {
long keepAlive = super.getKeepAliveDuration( response, context );
if ( keepAlive == -1 ) {
keepAlive = readTimeout * 1000;
}
return keepAlive;
}
} );
if ( user != null && pass != null ) {
authenticate( client, user, pass, u );
}
HttpGet get = new HttpGet( url );
if ( headers != null ) {
for ( String key : headers.keySet() ) {
get.addHeader( key, headers.get( key ) );
}
}
HttpResponse response = client.execute( get );
return new Pair<T, HttpResponse>( worker.work( response.getEntity().getContent() ), response );
}