package dk.thoerup.smssend; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; public class HttpUtil { static public Map decodeParams(String str) { Map res = new HashMap(); String parts[] = str.split("&"); for (String part : parts) { String pair[] = part.split("="); String key = pair[0]; String val = null; if (pair.length == 2) { val = URLDecoder.decode(pair[1]); } res.put(key, val); } return res; } static public String encodeParams(Map params) { StringBuilder sb = new StringBuilder(); boolean isFirst = true; for (String key : params.keySet()) { if (isFirst) { isFirst = false; } else { sb.append("&"); } String val = params.get(key); sb.append(key); sb.append("="); sb.append( encode(val) ); } return sb.toString(); } static String encode(String url) { if (url == null) return ""; try { return URLEncoder.encode(url, "UTF-8"); } catch (Exception e) { return url; } } public static byte[] getContent(String uri, int timeout) throws IOException { URL url = new URL(uri); URLConnection connection = url.openConnection(); connection.setConnectTimeout(timeout); InputStream is = connection.getInputStream(); return readInputStream(is); } public static byte[] postContent(String uri, String data, int timeout) throws IOException { URL url = new URL(uri); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestMethod("POST"); connection.setConnectTimeout(timeout); OutputStream os = connection.getOutputStream(); os.write( data.getBytes() ); InputStream is = connection.getInputStream(); return readInputStream(is); } static byte[] readInputStream(InputStream is) throws IOException{ byte buffer[] = new byte[1024]; ByteArrayOutputStream baos = new ByteArrayOutputStream(32768); //start buffer size - instead of default 32bytes try { int count; while ( (count = is.read(buffer)) != -1) { baos.write(buffer, 0, count); } } finally { try { is.close(); baos.close(); } catch (Exception e) {} //never mind if close throws an exception } return baos.toByteArray(); } }