Cookie support has been stripped out to remove the need for the jCookie library. Support can be built back in rather easily, or you can manually set them with the setCookie() method (not recommended.)
Save the below as HttpRequestWrapper.java and compile.
Code:
import java.net.URL;
import java.net.HttpURLConnection;
import java.net.Proxy;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStreamWriter;
import java.util.zip.GZIPInputStream;
import java.util.zip.InflaterInputStream;
//import com.sonalb.net.http.cookie.*;
import java.io.IOException;
/*
* An HTTP wrapper class implementing the Singleton Design pattern.
* Gzip and Deflate compression algorithms are supported.
* Proxy and Cookie support is included.
*
* @author unlimitedorb
* @date 02/15/08
*/
public class HttpRequestWrapper {
private URL url;
private String source;
private URL proxy;
private HttpURLConnection connection;
private String cookie = "";
private HttpRequestWrapper() {
}
private static class HttpRequestWrapperContainer {
private static final HttpRequestWrapper INSTANCE = new HttpRequestWrapper();
}
public static HttpRequestWrapper getInstance() {
return HttpRequestWrapperContainer.INSTANCE;
}
public String readWebPage(String address, String referer, String postData) {
try {
this.url = new URL(address);
if(proxy != null) {
SocketAddress addr = new InetSocketAddress(proxy.getHost(), proxy.getPort());
Proxy proxyObject = new Proxy(Proxy.Type.HTTP, addr);
connection = (HttpURLConnection) url.openConnection(proxyObject);
} else {
connection = (HttpURLConnection) url.openConnection();
}
connection.setFollowRedirects(false);
connection.setRequestProperty("Host", url.getHost());
connection.setRequestProperty("Accept", "*/*");
connection.setRequestProperty("Accept-Language", "en-us");
connection.setRequestProperty("Accept-Encoding", "gzip,deflate");
connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
if(!postData.isEmpty()) {
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", "" + postData.length());
} else {
connection.setRequestMethod("GET");
}
if(!referer.isEmpty()) {
connection.setRequestProperty("Referer", referer);
}
if(!cookie.isEmpty()) {
connection.setRequestProperty("Cookie", cookie);
}
if(!postData.isEmpty()) {
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write(postData);
out.flush();
out.close();
}
String encoding = connection.getContentEncoding();
InputStream stream;
if(encoding.equalsIgnoreCase("gzip"))
stream = new GZIPInputStream(connection.getInputStream());
else if(encoding.equalsIgnoreCase("deflate"))
stream = new InflaterInputStream(connection.getInputStream());
else
stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String line;
while((line = reader.readLine()) != null) {
source += line;
}
reader.close();
} catch(IOException e) {
e.printStackTrace();
}
return source;
}
public void setProxy(URL proxy) {
this.proxy = proxy;
}
public String getSource() {
return this.source;
}
public void setCookies(String cookie) {
this.cookie = cookie;
}
} To set cookies call HttpWrapper.getInstance().setCookie("Cookie data");
To set the proxy call: HttpWrapper.getInstance.setProxy(new URL("127.0.0.1:8080"));
Hope it's helpful to someone.