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.URL; import java.nio.charset.Charset; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.net.ssl.HttpsURLConnection; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.AbstractContentBody; import org.apache.http.entity.mime.content.StringBody; public class PostRequest { private String httpsURL; private HashMap<String, String> cookies = new HashMap<>(); private MultipartEntity data = new MultipartEntity(HttpMultipartMode.STRICT); private Map<String, List<String>> responseheader = null; public PostRequest(String url){ httpsURL = url; } public void putData(String k, AbstractContentBody v){ data.addPart(k, v); } public void putData(String k, String v) throws UnsupportedEncodingException{ putData(k, new StringBody(v, "text/plain", Charset.forName("UTF-8"))); } public void putData(Map<? extends String, ?> m) throws UnsupportedEncodingException{ for(Entry<? extends String, ?> e : m.entrySet()){ if(e.getValue() instanceof java.lang.String) putData(e.getKey(), (String)e.getValue()); else if(e.getValue() instanceof AbstractContentBody) putData(e.getKey(), (AbstractContentBody)e.getValue()); else throw new IllegalArgumentException(e.getValue().getClass().getCanonicalName()+" isn't supported as http multipart value"); } } public void putCookie(String k, String v){ cookies.put(k, v); } public String request() throws IOException{ URL myurl = new URL(httpsURL); HttpsURLConnection con = (HttpsURLConnection)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(data.getContentLength())); con.setRequestProperty("Accept-Charset", "UTF-8"); con.setRequestProperty("Content-Type", data.getContentType().getValue()+(data.getContentEncoding() != null ? ";charset="+data.getContentEncoding().getValue() : "")); 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()); data.writeTo(output); 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; } }