Code:
package manager;
import java.io.*;
import java.net.*;
import java.nio.charset.Charset;
import java.util.*;
import java.util.zip.*;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import javax.swing.JOptionPane;
import java.io.BufferedInputStream;
/**
*
* @author Kaden
*/
public class Connection implements Serializable {
static final long serialVersionUID = 1L;
String domain;
public String referer;
Map<String,String> cookies;
private boolean useProxy;
private String proxyIP;
private int proxyPort;
static String rpUseragent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8";
static String rpAcceptText = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
static String rpAcceptPng = "image/jpeg,image/*;q=0.8,*/*;q=0.5";
static String rpAcceptLanguage = "en-us,en;q=0.8";
static String rpAcceptEncoding = "gzip, deflate";
static String rpAcceptCharset = "ISO-8859-1,utf-8;q=0.7,*;q=0.3";
static String rpKeepAlive = "300";
static String rpConnection = "keep-alive";
static String rpContentType = "application/x-www-form-urlencoded";
public Connection(String domain, Map<String,String> cookies, String referer) {
this.domain = domain;
this.cookies = cookies;
this.referer = referer;
}
public Connection(String domain, Map<String,String> cookies) {
this(domain, cookies, null);
}
public Connection(String domain, String referer) {
this(domain, new HashMap<String,String>(), referer);
}
public Connection(String domain) {
this(domain, new HashMap<String,String>(), null);
}
public String get(String url) {
if(url.charAt(0) == '/')
url = domain + url;
try {
HttpURLConnection conn;
String strHTML = "";
if (useProxy) {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIP, proxyPort));
conn = (HttpURLConnection)(new URL(url.replaceAll(" ", "%20")).openConnection(proxy));
} else {
conn = (HttpURLConnection)(new URL(url.replaceAll(" ", "%20")).openConnection());
}
setRequestProperties(conn);
conn.setRequestMethod("GET");
referer = url;
strHTML = read(conn);
if (url.contains("neopets")) {
if (strHTML.contains("hdrimg.php?srvfile")) {
conn = (HttpURLConnection)(new URL(Functions.getBetween(strHTML, "hdrimg.php?srvfile=", (char)34 + "")).openConnection());
setRequestProperties(conn);
conn.setRequestMethod("GET");
read(conn);
} else if (strHTML.contains("npaward.php")) {
conn = (HttpURLConnection)(new URL("http://www.neopets.com/npaward.php?r=" + Functions.getBetween(strHTML, "http://www.neopets.com/npaward.php?r=", (char)34 + "")).openConnection());
setRequestProperties(conn);
conn.setRequestMethod("GET");
read(conn);
}
}
return strHTML;
} catch(IOException e1) {
return null;
}
}
public String post(String url, String[][] data) {
if(url.charAt(0) == '/')
url = domain + url;
try {
HttpURLConnection conn;
String strHTML = "";
if (useProxy) {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIP, proxyPort));
conn = (HttpURLConnection)(new URL(url.replaceAll(" ", "%20")).openConnection(proxy));
} else {
conn = (HttpURLConnection)(new URL(url.replaceAll(" ", "%20")).openConnection());
}
setRequestProperties(conn);
conn.setRequestMethod("POST");
conn.setDoOutput(true);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < data[0].length; i++)
sb.append(URLEncoder.encode(data[0][i], "UTF-8")).append('=').append(URLEncoder.encode(data[1][i], "UTF-8")).append('&');
conn.setRequestProperty("Content-Type", rpContentType);
conn.setRequestProperty("Content-Length", Integer.toString(sb.length()-1));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(conn.getOutputStream())));
out.write(sb.substring(0, sb.length()-1));
out.close();
referer = url;
strHTML = read(conn);
if (url.contains("neopets")) {
if (strHTML.contains("hdrimg.php?srvfile")) {
conn = (HttpURLConnection)(new URL(Functions.getBetween(strHTML, "hdrimg.php?srvfile=", (char)34 + "")).openConnection());
setRequestProperties(conn);
conn.setRequestMethod("GET");
read(conn);
} else if (strHTML.contains("npaward.php")) {
conn = (HttpURLConnection)(new URL("http://www.neopets.com/npaward.php?r=" + Functions.getBetween(strHTML, "http://www.neopets.com/npaward.php?r=", (char)34 + "")).openConnection());
setRequestProperties(conn);
conn.setRequestMethod("GET");
read(conn);
}
}
return strHTML;
} catch(IOException e1) {
return null;
}
}
public BufferedImage getImageFromUrl(String url) {
String imgURL = url;
URL url1 = null;
try {
url1 = new URL(imgURL);
HttpURLConnection conn = (HttpURLConnection)(url1).openConnection();
if(cookies != null && cookies.size() != 0)
conn.setRequestProperty("Cookie", getCookieString());
conn.connect();
InputStream in = conn.getInputStream();
Image image = null;
image = ImageIO.read(in);
BufferedImage cpimg=bufferImage(image);
return cpimg;
} catch (Exception e) {
return new BufferedImage(1, 1, 1);
}
}
public BufferedImage bufferImage(Image image) {
return bufferImage(image,BufferedImage.TYPE_INT_RGB);
}
public BufferedImage bufferImage(Image image, int type) {
BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
Graphics2D g = bufferedImage.createGraphics();
g.drawImage(image, null, null);
return bufferedImage;
}
public boolean hasCookie(String key) {
return cookies.containsKey(key);
}
public String getCookieString() {
StringBuilder sb = new StringBuilder();
for(String s : cookies.keySet())
sb.append(s).append('=').append(cookies.get(s)).append(';');
return sb.toString();
}
public boolean useProxy(boolean use, String ip, int port) {
useProxy = use;
proxyIP = ip;
proxyPort = port;
return use;
}
private void setRequestProperties(HttpURLConnection conn) {
conn.setInstanceFollowRedirects(false);
conn.setRequestProperty("User-Agent", rpUseragent);
conn.setRequestProperty("Accept", rpAcceptText);
conn.setRequestProperty("Accept-Language", rpAcceptLanguage);
conn.setRequestProperty("Accept-Encoding", rpAcceptEncoding);
conn.setRequestProperty("Accept-Charset", rpAcceptCharset);
conn.setRequestProperty("Keep-Alive", rpKeepAlive);
conn.setRequestProperty("Connection", rpConnection);
if(referer != null && referer.length() != 0)
conn.setRequestProperty("Referer", referer);
if(cookies != null && cookies.size() != 0)
conn.setRequestProperty("Cookie", getCookieString());
}
private void setRequestProperties2(HttpURLConnection conn) {
conn.setInstanceFollowRedirects(false);
conn.setRequestProperty("User-Agent", rpUseragent);
conn.setRequestProperty("Accept", rpAcceptText);
conn.setRequestProperty("Accept-Language", rpAcceptLanguage);
conn.setRequestProperty("Accept-Encoding", rpAcceptEncoding);
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("Connection", rpConnection);
conn.setRequestProperty("Cache-Control", "max-age=0");
if(cookies != null && cookies.size() != 0)
conn.setRequestProperty("Cookie", getCookieString());
}
private String read(HttpURLConnection conn) throws IOException {
BufferedReader in = null;
if(conn.getContentEncoding() == null)
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
else
if(conn.getContentEncoding().equalsIgnoreCase("gzip"))
in = new BufferedReader(new InputStreamReader(new GZIPInputStream(conn.getInputStream())));
else if(conn.getContentEncoding().equalsIgnoreCase("deflate"))
in = new BufferedReader(new InputStreamReader(new InflaterInputStream(conn.getInputStream(), new Inflater(true))));
StringBuilder sb = new StringBuilder();
String s;
while((s = in.readLine()) != null)
sb.append(s).append('\n');
putCookies(conn.getHeaderFields().get("Set-Cookie"));
return conn.getHeaderFields() + sb.toString();
}
private void putCookies(List<String> cookieList) {
if(cookieList == null)
return;
int index;
for(String cookie : cookieList)
cookies.put(cookie.substring(0, index = cookie.indexOf('=')), cookie.substring(index+1, cookie.indexOf(';', index)));
}
public void clearCookies() {
cookies.clear();
}
}