package org.deri.grefine.rdf.utils; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.params.ClientPNames; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.params.CoreProtocolPNames; import org.apache.http.params.HttpParams; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Some HTTP utilities * * @author Sergio Fernández <sergio.fernandez@salzburgresearch.at> * */ public class HttpUtils { private static Logger log = LoggerFactory.getLogger(HttpUtils.class); public static final String USER_AGENT = "Google Refine LMF Extension (beta)"; public static final int CONNECTION_TIMEOUT = 10000; public static final int SO_TIMEOUT = 60000; private static final int MAX_REDIRECTS = 3; public static HttpClient createClient() { HttpParams httpParams = new BasicHttpParams(); httpParams.setParameter(CoreProtocolPNames.USER_AGENT, USER_AGENT); httpParams.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); httpParams.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); httpParams.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS ,true); httpParams.setIntParameter(ClientPNames.MAX_REDIRECTS, MAX_REDIRECTS); return new DefaultHttpClient(httpParams); } public static HttpEntity get(String uri) throws IOException { log.debug("GET request over " + uri); HttpGet get = new HttpGet(uri); return get(get); } public static HttpEntity get(String uri, String accept) throws IOException { log.debug("GET request over " + uri); HttpGet get = new HttpGet(uri); get.setHeader("Accept", accept); return get(get); } private static HttpEntity get(HttpGet get) throws IOException { HttpClient client = createClient(); HttpResponse response = client.execute(get); if (200 == response.getStatusLine().getStatusCode()) { return response.getEntity(); } else { String msg = "Error performing GET request: " + response.getStatusLine().getStatusCode() + " " + response.getStatusLine().getReasonPhrase(); log.error(msg); throw new ClientProtocolException(msg); } } }