Fixes applying patch from issue #21. Workaround to solve some HTTPClient connections leak
This commit is contained in:
parent
15341547f1
commit
314771e33d
@ -36,6 +36,7 @@ import java.net.URL;
|
||||
|
||||
import org.apache.commons.httpclient.Credentials;
|
||||
import org.apache.commons.httpclient.HttpClient;
|
||||
import org.apache.commons.httpclient.HttpConnectionManager;
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.httpclient.UsernamePasswordCredentials;
|
||||
import org.apache.commons.httpclient.auth.AuthScope;
|
||||
@ -59,68 +60,74 @@ public class HTTPUtils {
|
||||
|
||||
/**
|
||||
* Performs an HTTP GET on the given URL.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
*/
|
||||
public static String get(String url) throws MalformedURLException {
|
||||
public static String get(String url) throws MalformedURLException {
|
||||
return get(url, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs an HTTP GET on the given URL.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
* Performs an HTTP GET on the given URL. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
*/
|
||||
public static String get(String url, String username, String pw) throws MalformedURLException {
|
||||
public static String get(String url, String username, String pw) throws MalformedURLException {
|
||||
|
||||
GetMethod httpMethod = null;
|
||||
try {
|
||||
HttpClient client = new HttpClient();
|
||||
HttpClient client = new HttpClient();
|
||||
HttpConnectionManager connectionManager = client.getHttpConnectionManager();
|
||||
try {
|
||||
setAuth(client, url, username, pw);
|
||||
httpMethod = new GetMethod(url);
|
||||
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
if(status == HttpStatus.SC_OK) {
|
||||
httpMethod = new GetMethod(url);
|
||||
connectionManager.getParams().setConnectionTimeout(5000);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
if (status == HttpStatus.SC_OK) {
|
||||
InputStream is = httpMethod.getResponseBodyAsStream();
|
||||
String response = IOUtils.toString(is);
|
||||
if(response.trim().length()==0) { // sometime gs rest fails
|
||||
LOGGER.warn("ResponseBody is empty");
|
||||
return null;
|
||||
} else {
|
||||
String response = IOUtils.toString(is);
|
||||
IOUtils.closeQuietly(is);
|
||||
if (response.trim().length() == 0) { // sometime gs rest fails
|
||||
LOGGER.warn("ResponseBody is empty");
|
||||
return null;
|
||||
} else {
|
||||
return response;
|
||||
}
|
||||
} else {
|
||||
LOGGER.info("("+status+") " + HttpStatus.getStatusText(status) + " -- " + url );
|
||||
}
|
||||
} catch (ConnectException e) {
|
||||
LOGGER.info("Couldn't connect to ["+url+"]");
|
||||
} catch (IOException e) {
|
||||
LOGGER.info("Error talking to ["+url+"]", e);
|
||||
} finally {
|
||||
if(httpMethod != null)
|
||||
} else {
|
||||
LOGGER.info("(" + status + ") " + HttpStatus.getStatusText(status) + " -- " + url);
|
||||
}
|
||||
} catch (ConnectException e) {
|
||||
LOGGER.info("Couldn't connect to [" + url + "]");
|
||||
} catch (IOException e) {
|
||||
LOGGER.info("Error talking to [" + url + "]", e);
|
||||
} finally {
|
||||
if (httpMethod != null)
|
||||
httpMethod.releaseConnection();
|
||||
connectionManager.closeIdleConnections(0);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* PUTs a File to the given URL.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param file The File to be sent.
|
||||
* PUTs a File to the given URL. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param file The File to be sent.
|
||||
* @param contentType The content-type to advert in the PUT.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
* @return the HTTP response or <TT>null</TT> on errors.
|
||||
*/
|
||||
@ -129,15 +136,16 @@ public class HTTPUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* PUTs a String to the given URL.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param content The content to be sent as a String.
|
||||
* PUTs a String to the given URL. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param content The content to be sent as a String.
|
||||
* @param contentType The content-type to advert in the PUT.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
* @return the HTTP response or <TT>null</TT> on errors.
|
||||
*/
|
||||
@ -151,14 +159,15 @@ public class HTTPUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* PUTs a String representing an XML document to the given URL.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param content The XML content to be sent as a String.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
* PUTs a String representing an XML document to the given URL. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param content The XML content to be sent as a String.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
* @return the HTTP response or <TT>null</TT> on errors.
|
||||
*/
|
||||
@ -167,14 +176,15 @@ public class HTTPUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a PUT to the given URL.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* Performs a PUT to the given URL. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param requestEntity The request to be sent.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
* @return the HTTP response or <TT>null</TT> on errors.
|
||||
*/
|
||||
@ -183,15 +193,16 @@ public class HTTPUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* POSTs a File to the given URL.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param file The File to be sent.
|
||||
* POSTs a File to the given URL. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param file The File to be sent.
|
||||
* @param contentType The content-type to advert in the POST.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
* @return the HTTP response or <TT>null</TT> on errors.
|
||||
*/
|
||||
@ -200,15 +211,16 @@ public class HTTPUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* POSTs a String to the given URL.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param content The content to be sent as a String.
|
||||
* POSTs a String to the given URL. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param content The content to be sent as a String.
|
||||
* @param contentType The content-type to advert in the POST.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
* @return the HTTP response or <TT>null</TT> on errors.
|
||||
*/
|
||||
@ -222,14 +234,15 @@ public class HTTPUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* POSTs a String representing an XML document to the given URL.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param content The XML content to be sent as a String.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
* POSTs a String representing an XML document to the given URL. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param content The XML content to be sent as a String.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
* @return the HTTP response or <TT>null</TT> on errors.
|
||||
*/
|
||||
@ -238,14 +251,15 @@ public class HTTPUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a POST to the given URL.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* Performs a POST to the given URL. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
*
|
||||
* @param url The URL where to connect to.
|
||||
* @param requestEntity The request to be sent.
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200 (OK).
|
||||
* @param username Basic auth credential. No basic auth if null.
|
||||
* @param pw Basic auth credential. No basic auth if null.
|
||||
* @return The HTTP response as a String if the HTTP response code was 200
|
||||
* (OK).
|
||||
* @throws MalformedURLException
|
||||
* @return the HTTP response or <TT>null</TT> on errors.
|
||||
*/
|
||||
@ -254,181 +268,192 @@ public class HTTPUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Send an HTTP request (PUT or POST) to a server.
|
||||
* <BR>Basic auth is used if both username and pw are not null.
|
||||
* Send an HTTP request (PUT or POST) to a server. <BR>
|
||||
* Basic auth is used if both username and pw are not null.
|
||||
* <P>
|
||||
* Only <UL>
|
||||
* <LI>200: OK</LI>
|
||||
* <LI>201: ACCEPTED</LI>
|
||||
* <LI>202: CREATED</LI>
|
||||
* </UL> are accepted as successful codes; in these cases the response string will be returned.
|
||||
*
|
||||
* Only
|
||||
* <UL>
|
||||
* <LI>200: OK</LI>
|
||||
* <LI>201: ACCEPTED</LI>
|
||||
* <LI>202: CREATED</LI>
|
||||
* </UL>
|
||||
* are accepted as successful codes; in these cases the response string will
|
||||
* be returned.
|
||||
*
|
||||
* @return the HTTP response or <TT>null</TT> on errors.
|
||||
*/
|
||||
private static String send(final EntityEnclosingMethod httpMethod, String url, RequestEntity requestEntity, String username, String pw) {
|
||||
|
||||
private static String send(final EntityEnclosingMethod httpMethod, String url,
|
||||
RequestEntity requestEntity, String username, String pw) {
|
||||
HttpClient client = new HttpClient();
|
||||
HttpConnectionManager connectionManager = client.getHttpConnectionManager();
|
||||
try {
|
||||
HttpClient client = new HttpClient();
|
||||
setAuth(client, url, username, pw);
|
||||
// httpMethod = new PutMethod(url);
|
||||
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
|
||||
if(requestEntity != null)
|
||||
connectionManager.getParams().setConnectionTimeout(5000);
|
||||
if (requestEntity != null)
|
||||
httpMethod.setRequestEntity(requestEntity);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
|
||||
switch(status) {
|
||||
case HttpURLConnection.HTTP_OK:
|
||||
case HttpURLConnection.HTTP_CREATED:
|
||||
case HttpURLConnection.HTTP_ACCEPTED:
|
||||
String response = IOUtils.toString(httpMethod.getResponseBodyAsStream());
|
||||
// LOGGER.info("================= POST " + url);
|
||||
LOGGER.info("HTTP "+ httpMethod.getStatusText()+": " + response);
|
||||
return response;
|
||||
default:
|
||||
LOGGER.warn("Bad response: code["+status+"]" +
|
||||
" msg["+httpMethod.getStatusText()+"]" +
|
||||
" url["+url+"]" +
|
||||
" method["+httpMethod.getClass().getSimpleName()+"]: " +
|
||||
IOUtils.toString(httpMethod.getResponseBodyAsStream())
|
||||
);
|
||||
return null;
|
||||
}
|
||||
} catch (ConnectException e) {
|
||||
LOGGER.info("Couldn't connect to ["+url+"]");
|
||||
return null;
|
||||
switch (status) {
|
||||
case HttpURLConnection.HTTP_OK:
|
||||
case HttpURLConnection.HTTP_CREATED:
|
||||
case HttpURLConnection.HTTP_ACCEPTED:
|
||||
String response = IOUtils.toString(httpMethod.getResponseBodyAsStream());
|
||||
// LOGGER.info("================= POST " + url);
|
||||
if (LOGGER.isInfoEnabled())
|
||||
LOGGER.info("HTTP " + httpMethod.getStatusText() + ": " + response);
|
||||
return response;
|
||||
default:
|
||||
LOGGER.warn("Bad response: code[" + status + "]" + " msg[" + httpMethod.getStatusText() + "]"
|
||||
+ " url[" + url + "]" + " method[" + httpMethod.getClass().getSimpleName()
|
||||
+ "]: " + IOUtils.toString(httpMethod.getResponseBodyAsStream()));
|
||||
return null;
|
||||
}
|
||||
} catch (ConnectException e) {
|
||||
LOGGER.info("Couldn't connect to [" + url + "]");
|
||||
return null;
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("Error talking to " + url + " : " + e.getLocalizedMessage());
|
||||
return null;
|
||||
} finally {
|
||||
if(httpMethod != null)
|
||||
return null;
|
||||
} finally {
|
||||
if (httpMethod != null)
|
||||
httpMethod.releaseConnection();
|
||||
connectionManager.closeIdleConnections(0);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean delete(String url, final String user, final String pw) {
|
||||
public static boolean delete(String url, final String user, final String pw) {
|
||||
|
||||
DeleteMethod httpMethod = null;
|
||||
|
||||
try {
|
||||
HttpClient client = new HttpClient();
|
||||
DeleteMethod httpMethod = null;
|
||||
HttpClient client = new HttpClient();
|
||||
HttpConnectionManager connectionManager = client.getHttpConnectionManager();
|
||||
try {
|
||||
setAuth(client, url, user, pw);
|
||||
httpMethod = new DeleteMethod(url);
|
||||
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
String response = "";
|
||||
if(status == HttpStatus.SC_OK) {
|
||||
connectionManager.getParams().setConnectionTimeout(5000);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
String response = "";
|
||||
if (status == HttpStatus.SC_OK) {
|
||||
InputStream is = httpMethod.getResponseBodyAsStream();
|
||||
response = IOUtils.toString(is);
|
||||
if(response.trim().equals("")) { // sometimes gs rest fails
|
||||
if(LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("ResponseBody is empty (this may be not an error since we just performed a DELETE call)");
|
||||
return true;
|
||||
}
|
||||
if(LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("("+status+") " + httpMethod.getStatusText() + " -- " + url );
|
||||
return true;
|
||||
} else {
|
||||
LOGGER.info("("+status+") " + httpMethod.getStatusText() + " -- " + url );
|
||||
LOGGER.info("Response: '"+response+"'" );
|
||||
}
|
||||
} catch (ConnectException e) {
|
||||
LOGGER.info("Couldn't connect to ["+url+"]");
|
||||
} catch (IOException e) {
|
||||
LOGGER.info("Error talking to ["+url+"]", e);
|
||||
} finally {
|
||||
if(httpMethod != null)
|
||||
response = IOUtils.toString(is);
|
||||
IOUtils.closeQuietly(is);
|
||||
if (response.trim().equals("")) { // sometimes gs rest fails
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER
|
||||
.debug("ResponseBody is empty (this may be not an error since we just performed a DELETE call)");
|
||||
return true;
|
||||
}
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("(" + status + ") " + httpMethod.getStatusText() + " -- " + url);
|
||||
return true;
|
||||
} else {
|
||||
LOGGER.info("(" + status + ") " + httpMethod.getStatusText() + " -- " + url);
|
||||
LOGGER.info("Response: '" + response + "'");
|
||||
}
|
||||
} catch (ConnectException e) {
|
||||
LOGGER.info("Couldn't connect to [" + url + "]");
|
||||
} catch (IOException e) {
|
||||
LOGGER.info("Error talking to [" + url + "]", e);
|
||||
} finally {
|
||||
if (httpMethod != null)
|
||||
httpMethod.releaseConnection();
|
||||
connectionManager.closeIdleConnections(0);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the server response was an HTTP_OK
|
||||
*/
|
||||
public static boolean httpPing(String url) {
|
||||
public static boolean httpPing(String url) {
|
||||
return httpPing(url, null, null);
|
||||
}
|
||||
|
||||
public static boolean httpPing(String url, String username, String pw) {
|
||||
public static boolean httpPing(String url, String username, String pw) {
|
||||
|
||||
GetMethod httpMethod = null;
|
||||
|
||||
try {
|
||||
HttpClient client = new HttpClient();
|
||||
HttpClient client = new HttpClient();
|
||||
HttpConnectionManager connectionManager = client.getHttpConnectionManager();
|
||||
try {
|
||||
setAuth(client, url, username, pw);
|
||||
httpMethod = new GetMethod(url);
|
||||
client.getHttpConnectionManager().getParams().setConnectionTimeout(2000);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
if(status != HttpStatus.SC_OK) {
|
||||
LOGGER.warn("PING failed at '"+url+"': ("+status+") " + httpMethod.getStatusText());
|
||||
httpMethod = new GetMethod(url);
|
||||
connectionManager.getParams().setConnectionTimeout(2000);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
if (status != HttpStatus.SC_OK) {
|
||||
LOGGER.warn("PING failed at '" + url + "': (" + status + ") " + httpMethod.getStatusText());
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
} catch (ConnectException e) {
|
||||
return false;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
} finally {
|
||||
if(httpMethod != null)
|
||||
} catch (ConnectException e) {
|
||||
return false;
|
||||
} catch (IOException e) {
|
||||
LOGGER.error(e.getLocalizedMessage(),e);
|
||||
return false;
|
||||
} finally {
|
||||
if (httpMethod != null)
|
||||
httpMethod.releaseConnection();
|
||||
connectionManager.closeIdleConnections(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to query for REST resources.
|
||||
*
|
||||
*
|
||||
* @param url The URL of the REST resource to query about.
|
||||
* @param username
|
||||
* @param pw
|
||||
* @return true on 200, false on 404.
|
||||
* @throws RuntimeException on unhandled status or exceptions.
|
||||
*/
|
||||
public static boolean exists(String url, String username, String pw) {
|
||||
public static boolean exists(String url, String username, String pw) {
|
||||
|
||||
GetMethod httpMethod = null;
|
||||
|
||||
try {
|
||||
HttpClient client = new HttpClient();
|
||||
HttpClient client = new HttpClient();
|
||||
HttpConnectionManager connectionManager = client.getHttpConnectionManager();
|
||||
try {
|
||||
setAuth(client, url, username, pw);
|
||||
httpMethod = new GetMethod(url);
|
||||
client.getHttpConnectionManager().getParams().setConnectionTimeout(2000);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
switch(status) {
|
||||
case HttpStatus.SC_OK:
|
||||
return true;
|
||||
case HttpStatus.SC_NOT_FOUND:
|
||||
return false;
|
||||
default:
|
||||
throw new RuntimeException("Unhandled response status at '"+url+"': ("+status+") " + httpMethod.getStatusText());
|
||||
httpMethod = new GetMethod(url);
|
||||
connectionManager.getParams().setConnectionTimeout(2000);
|
||||
int status = client.executeMethod(httpMethod);
|
||||
switch (status) {
|
||||
case HttpStatus.SC_OK:
|
||||
return true;
|
||||
case HttpStatus.SC_NOT_FOUND:
|
||||
return false;
|
||||
default:
|
||||
throw new RuntimeException("Unhandled response status at '" + url + "': (" + status + ") "
|
||||
+ httpMethod.getStatusText());
|
||||
}
|
||||
} catch (ConnectException e) {
|
||||
} catch (ConnectException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (IOException e) {
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
if(httpMethod != null)
|
||||
} finally {
|
||||
if (httpMethod != null)
|
||||
httpMethod.releaseConnection();
|
||||
connectionManager.closeIdleConnections(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void setAuth(HttpClient client, String url, String username, String pw) throws MalformedURLException {
|
||||
private static void setAuth(HttpClient client, String url, String username, String pw)
|
||||
throws MalformedURLException {
|
||||
URL u = new URL(url);
|
||||
if(username != null && pw != null) {
|
||||
if (username != null && pw != null) {
|
||||
Credentials defaultcreds = new UsernamePasswordCredentials(username, pw);
|
||||
client.getState().setCredentials(new AuthScope(u.getHost(), u.getPort()), defaultcreds);
|
||||
client.getParams().setAuthenticationPreemptive(true); // GS2 by default always requires authentication
|
||||
client.getParams().setAuthenticationPreemptive(true); // GS2 by
|
||||
// default
|
||||
// always
|
||||
// requires
|
||||
// authentication
|
||||
} else {
|
||||
if(LOGGER.isDebugEnabled()) {
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
LOGGER.debug("Not setting credentials to access to " + url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* recursively remove ending slashes
|
||||
*
|
||||
|
||||
Loading…
Reference in New Issue
Block a user