package at.gv.egovernment.moa.id.util; /** * HTTP Utilities * * @author Rudolf Schamberger * @version $Id$ */ import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.HttpURLConnection; import java.net.URL; import org.apache.regexp.RE; import org.apache.regexp.RESyntaxException; /** * * @author Rudolf Schamberger * */ public class HTTPUtils { /** * Utility used to obtainin correct encoded HTTP content. * Reads a given Content adressed by HTTP-URL into String. * Content encoding is considered by using the Content-Type HTTP header charset value. * @param URL HTTP URL to read from. * @return String representation of content * @throws IOException on data-reading problems */ public static String readHttpURL(String URL) throws IOException { URL url = new URL(URL); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); String contentType = conn.getContentType(); RE regExp = null; try { regExp = new RE("(;.*charset=)(\"*)(.*[^\"])"); } catch (RESyntaxException e) { //RESyntaxException is not possible = expr. is costant } boolean charsetSupplied = regExp.match(contentType); String encoding = "ISO-8859-1"; //default HTTP encoding if (charsetSupplied) { encoding = regExp.getParen(3); } InputStream instream = new BufferedInputStream(conn.getInputStream()); InputStreamReader isr = new InputStreamReader(instream, encoding); Reader in = new BufferedReader(isr); int ch; StringBuffer buffer = new StringBuffer(); while ((ch = in.read()) > -1) { buffer.append((char)ch); } in.close(); conn.disconnect(); return buffer.toString(); } }