- Code: Alles auswählen
/**
* Führt einen HTTP GET Request aus und holt die Daten als String vom Server ab.
*
* @param url
* die URL
* @return HttpData als String
*/
String getHTTPDataGET(URL url) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Fetching from " + url);
}
try {
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(this.timeout);
conn.setConnectTimeout(this.timeout);
conn.setRequestMethod("GET");
conn.setUseCaches(false);
StringBuffer sb = new StringBuffer();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
sb.append(inputLine);
sb.append("\n");
}
in.close();
return sb.toString();
} catch (Exception e) {
LOGGER.warn("Caught " + e.getMessage() + " while fetching " + url);
return null;
}
}
Ein POST REQUEST
- Code: Alles auswählen
/**
* Führt einen HTTP POST Request aus und holt die Daten als String vom Server ab.
*
* @param url
* die URL
* @param urlParameters
* die URL Parameter
* @return HttpData als String
*/
String getHTTPDataPOST(String targetURL, String urlParameters)
{
URL url;
HttpURLConnection connection = null;
try {
//Create connection
url = new URL(targetURL);
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", "" +
Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "de-DE");
connection.setUseCaches (false);
connection.setDoInput(true);
connection.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (
connection.getOutputStream ());
wr.writeBytes(urlParameters);
wr.flush ();
wr.close ();
//Get Response
StringBuffer sb = new StringBuffer();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
while((inputLine = rd.readLine()) != null) {
sb.append(inputLine);
sb.append('\r');
}
rd.close();
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if(connection != null) {
connection.disconnect();
}
}
}
Der Unterschied ist das bei POST die Parameter gesondert übergeben werden.
Dies ist besonders bei langen Parameterwerten bzw einer großen Parameterdatenmenge zu empfehlen.
die URLParameter müssen wie folgt als URL encodeter String übergeben werden:
- Code: Alles auswählen
Bsp:
String urlParameters = "p1Name=" + URLEncoder.encode("wert1", "UTF-8") + "&p2Name=" + URLEncoder.encode("wert2", "UTF-8")