package mediawiki;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class SimplePostRequest {
private String httpsURL;
private HashMap<String, String> data = new HashMap<>();
private HashMap<String, String> cookies = new HashMap<>();
private Map<String, List<String>> responseheader = null;
public SimplePostRequest(String url){
httpsURL = url;
}
public void putData(String k, String v){
data.put(k, v);
}
public void putData(Map<? extends String, ? extends String> m){
data.putAll(m);
}
public String getData(String k){
return data.get(k);
}
public void putCookie(String k, String v){
cookies.put(k, v);
}
public String request() throws IOException{
String query = "";
for(Entry<String, String> t : data.entrySet()){
if(query!=""){query+="&";}
try {
query += t.getKey()+"="+URLEncoder.encode(t.getValue(),"UTF-8");
} catch (UnsupportedEncodingException e) {}
}
URL myurl = new URL(httpsURL);
HttpURLConnection con = (HttpURLConnection)myurl.openConnection();
String cs = "";
for(Entry<String, String> t : cookies.entrySet()){
cs += t.getKey()+"="+t.getValue()+"; ";
}
con.setRequestProperty("Cookie", cs);
con.setRequestMethod("POST");
con.setRequestProperty("Content-length", String.valueOf(query.length()));
con.setRequestProperty("Accept-Charset", "UTF-8");
con.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
con.setRequestProperty("User-Agent", "Kaspar 1.0 by Tim Seppelt");
con.setDoOutput(true);
con.setDoInput(true);
StringBuffer b = new StringBuffer();
DataOutputStream output = new DataOutputStream(con.getOutputStream());
output.writeBytes(query);
output.close();
BufferedReader input = new BufferedReader( new InputStreamReader(con.getInputStream(), "UTF-8"));
this.responseheader = con.getHeaderFields();
for( int c = input.read(); c != -1; c = input.read() )
b.append((char)c );
input.close();
return b.toString();
}
public Map<String, List<String>> getResponseHeader(){
return responseheader;
}
public Map<String, String> getData(){
return data;
}
}