package advancedsystemsmanager.helpers; import java.io.*; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import java.util.concurrent.Callable; public class HttpPost implements Callable<String> { private static final String ENCODING = "UTF-8"; private HashMap<String, String> postData; private String url; public HttpPost(String url) { postData = new HashMap<String, String>(); this.url = url; } public void put(String key, String value) { try { this.postData.put(URLEncoder.encode(key, ENCODING), URLEncoder.encode(value, ENCODING).replaceAll("%00", "")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } @Override public String call() throws Exception { return getContents(); } public String getContents() { try { URL url = new URL(this.url); URLConnection connection = url.openConnection(); connection.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream()); wr.write(this.getPost()); wr.flush(); wr.close(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder builder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { if (builder.length() > 0) builder.append('\n'); builder.append(line); } reader.close(); return new String(builder); } catch (MalformedURLException e) { throw new IllegalArgumentException("Malformed link: " + e); } catch (IOException e) { throw new RuntimeException("Failed to fetch contents from link: " + e); } } public String getPost() { StringBuilder builder = new StringBuilder(); for (Map.Entry<String, String> entry : postData.entrySet()) builder.append(entry.getKey()).append('=').append(entry.getValue()).append('&'); if (postData.size() > 0) builder.deleteCharAt(builder.length() - 1); return new String(builder); } }