import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import android.util.Log;
class HttpData {
public String content;
public Hashtable cookies = new Hashtable();
public Hashtable headers = new Hashtable();
}
public class HttpRequest {
/**
* HttpGet request
*
* @param sUrl
* @return
*/
public static HttpData get(String sUrl) throws Exception {
HttpData ret = null;
String str;
StringBuffer buff = new StringBuffer();
// try {
URL url = new URL(sUrl);
URLConnection con = url.openConnection();
BufferedReader in = new BufferedReader(new
InputStreamReader(con.getInputStream()));
// boolean notRemoveNewLine = sUrl.contains("news");
// if (notRemoveNewLine) {
// while ((str = in.readLine()) != null) {
// buff.append(str + Global.NEW_LINE_CHAR);
// }
// } else {
// while ((str = in.readLine()) != null) {
// buff.append(str);
// }
// }
while ((str = in.readLine()) != null) {
buff.append(str);
}
ret = new HttpData();
ret.content = buff.toString();
// get headers
Map> headers = con.getHeaderFields();
Set>> hKeys = headers.entrySet();
for (Iterator>> i = hKeys.iterator(); i
.hasNext();) {
Entry> m = i.next();
ret.headers.put(m.getKey(), m.getValue().toString());
if (m.getKey().equals("set-cookie"))
ret.cookies.put(m.getKey(), m.getValue().toString());
}
// } catch (Exception e) {
// e.printStackTrace();
// Log.e("HttpRequest", e.toString());
// }
return ret;
}
/**
* HTTP post request
*
* @param sUrl
* @param ht
* @return
* @throws Exception
*/
public static HttpData post(String sUrl, Hashtable ht)
throws Exception {
String key;
StringBuffer data = new StringBuffer();
Enumeration keys = ht.keys();
while (keys.hasMoreElements()) {
key = keys.nextElement();
data.append(URLEncoder.encode(key, "UTF-8"));
data.append("=");
data.append(URLEncoder.encode(ht.get(key), "UTF-8"));
data.append("&");
}
return HttpRequest.post(sUrl, data.toString());
}
/**
* HTTP post request
*
* @param sUrl
* @param data
* @return
*/
public static HttpData post(String sUrl, String data) {
StringBuffer ret = new StringBuffer();
HttpData dat = new HttpData();
String header;
try {
// Send data
URL url = new URL(sUrl);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(
conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
Map> headers = conn.getHeaderFields();
Set>> hKeys = headers.entrySet();
for (Iterator>> i = hKeys.iterator(); i
.hasNext();) {
Entry> m = i.next();
dat.headers.put(m.getKey(), m.getValue().toString());
if (m.getKey().equals("set-cookie"))
dat.cookies.put(m.getKey(), m.getValue().toString());
}
BufferedReader rd = new BufferedReader(new
InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
ret.append(line);
}
Log.e("ERROR", line);
wr.close();
rd.close();
} catch (Exception e) {
e.printStackTrace();
Log.e("ERROR", "ERROR IN CODE:" + e.getMessage());
}
dat.content = ret.toString();
return dat;
}
/**
* Post request (upload files)
*
* @param sUrl
* @param files
* @return HttpData
*/
/*
* public static HttpData post(String sUrl, ArrayList files) {
* Hashtable ht = new Hashtable(); return
* HttpRequest.post(sUrl, ht, files); }
*/
/**
* Post request (upload files)
*
* @param sUrl
* @param params
* Form data
* @param files
* @return
*/
/*
* public static HttpData post(String sUrl, Hashtable
* params, ArrayList
*
* files) { HttpData ret = new HttpData(); try { String boundary =
* "*****************************************"; String newLine = "rn"; int
* bytesAvailable; int bufferSize; int maxBufferSize = 4096; int bytesRead;
*
* URL url = new URL(sUrl); HttpURLConnection con = (HttpURLConnection)
* url.openConnection(); con.setDoInput(true); con.setDoOutput(true);
* con.setUseCaches(false); con.setRequestMethod("POST");
* con.setRequestProperty("Connection", "Keep-Alive");
* con.setRequestProperty("Content-Type",
*
* "multipart/form-data;boundary="+boundary); DataOutputStream dos = new
* DataOutputStream(con.getOutputStream());
*
* //dos.writeChars(params);
*
* //upload files for (int i=0; i * FileInputStream fis = new FileInputStream(files.get(i));
* dos.writeBytes("--" + boundary + newLine);
* dos.writeBytes("Content-Disposition: form-data; " +
* "name="file_"+i+"";filename="" + files.get(i).getPath() +""" + newLine +
* newLine); bytesAvailable = fis.available(); bufferSize =
* Math.min(bytesAvailable, maxBufferSize); byte[] buffer = new
* byte[bufferSize]; bytesRead = fis.read(buffer, 0, bufferSize); while
* (bytesRead > 0) { dos.write(buffer, 0, bufferSize); bytesAvailable =
* fis.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize);
* bytesRead = fis.read(buffer, 0, bufferSize); } dos.writeBytes(newLine);
* dos.writeBytes("--" + boundary + "--" + newLine); fis.close(); } // Now
* write the data
*
* Enumeration keys = params.keys(); String key, val; while
* (keys.hasMoreElements()) { key = keys.nextElement().toString(); val =
* params.get(key); dos.writeBytes("--" + boundary + newLine);
* dos.writeBytes("Content-Disposition: form-data;name="" + key+""" +
* newLine + newLine + val); dos.writeBytes(newLine); dos.writeBytes("--" +
* boundary + "--" + newLine);
*
* } dos.flush();
*
* BufferedReader rd = new BufferedReader( new
* InputStreamReader(con.getInputStream())); String line; while ((line =
* rd.readLine()) != null) { ret.content += line + "rn"; } //get headers
* Map> headers = con.getHeaderFields();
* Set>> hKeys = headers.entrySet(); for
* (Iterator>> i = hKeys.iterator();
* i.hasNext();) { Entry> m = i.next();
*
* Log.w("HEADER_KEY", m.getKey() + ""); ret.headers.put(m.getKey(),
* m.getValue().toString()); if (m.getKey().equals("set-cookie"))
* ret.cookies.put(m.getKey(), m.getValue().toString()); } dos.close();
* rd.close(); } catch (MalformedURLException me) {
*
* } catch (IOException ie) {
*
* } catch (Exception e) { Log.e("HREQ", "Exception: "+e.toString()); }
* return ret; }
*/
}