package com.aerhard.oxygen.plugin.dbtagger.util;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ResourceBundle;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import javax.swing.*;
/**
* Utility functions.
*/
public class HttpUtil {
private static final String UTF_8 = "UTF-8";
/** The localization resource bundle. */
private ResourceBundle i18n;
/**
* Instantiates a new HTTP utility object.
*/
public HttpUtil() {
i18n = ResourceBundle.getBundle("Tagger");
}
/**
* Performs an HTTP get request and returns the resulting string or null if
* an error occurred.
*
* @param user
* The user name.
* @param password
* The password.
* @param urlOption
* The part of the URL specified in the option dialog
* @param searchString
* The search string.
* @param isFirst
* Specifies if this is the first search in a series.
* @return The response string.
*/
public String get(String user, String password, String urlOption,
String searchString, Boolean isFirst) {
String response = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
try {
String url = urlOption + URLEncoder.encode(searchString, UTF_8);
if (isFirst) {
url += ((searchString.contains("?") || url
.contains("?")) ? "&" : "?") + "first=true";
}
HttpGet httpGet = new HttpGet(url);
if (user != null && password != null) {
httpGet.addHeader(BasicScheme.authenticate(
new UsernamePasswordCredentials(user, password), UTF_8,
false));
}
ResponseHandler<String> responseHandler = new BasicResponseHandler();
response = httpClient.execute(httpGet, responseHandler);
} catch (UnsupportedEncodingException e) {
JOptionPane.showMessageDialog(
null,
i18n.getString("httpUtil.encodingError")
+ ":\n" + urlOption + searchString + "\n" + e.toString(),
i18n.getString("httpUtil.error"),
JOptionPane.ERROR_MESSAGE);
} catch (ClientProtocolException e) {
JOptionPane.showMessageDialog(
null,
i18n.getString("httpUtil.protocolError")
+ ":\n" + urlOption + searchString + "\n" + e.toString(),
i18n.getString("httpUtil.error"),
JOptionPane.ERROR_MESSAGE);
} catch (IOException e) {
JOptionPane.showMessageDialog(
null,
i18n.getString("httpUtil.IOError")
+ ":\n" + urlOption + searchString + "\n" + e.toString(),
i18n.getString("httpUtil.error"),
JOptionPane.ERROR_MESSAGE);
} finally {
httpClient.getConnectionManager().shutdown();
}
return response;
}
}