Mange tak, du, men jeg er rent faktisk selv nået så langt.
Jeg kan være lidt mere specifik og sige at jeg når til der hvor jeg skal modtaget svaret. Det er lykkedes mig at lave en simpel POST til en side jeg selv har smækket op, men ikke til eksempelvis google - heller ikke sider med noget login-halløj, hvilket er det det skal bruges til.
Generelt TROR jeg det har noget med sessions at gøre, men jeg er lidt blank på hvordan man gør det. Indtil videre har jeg bare opsamlet cookies fra server ("Set-Cookie") og sendt den tilbage med med min næste request ("Cookie").
protected void initRequest(HttpURLConnection con,String body) throws Exception{
if(body.length() > 0){
con.setRequestProperty("Content-type","application/x-www-form-urlencoded" );
}
if(body.length() > 0){
con.setRequestProperty("Content-length",Integer.toString(body.length()));
}
if(session != null && session.length() > 0){
con.setRequestProperty("Cookie",session);
System.err.println(con.getRequestMethod()+" "+con.getURL()+": Setting cookie="+session);
}
System.out.println("Request props: "+con.getRequestProperties());
}
protected HttpURLConnection createConnection(URL url) throws Exception{
return (HttpURLConnection) url.openConnection();
}
public void makeGETRequest(String urlS,String body){
HttpURLConnection con;
URL url;
try {
url = new URL(urlS);
con = createConnection(url);
con.setRequestMethod("GET");
con.setDoInput(true);
con.setDoOutput(true);
con.setAllowUserInteraction(false);
con.setUseCaches(false);
initRequest(con,body);
con.connect();
if(body.length() > 0){
byte[] data;
BufferedOutputStream out = new BufferedOutputStream(con.getOutputStream());
data = body.getBytes();
out.write(data,0,data.length);
out.flush();
}
int responseCode = con.getResponseCode();
String responseMsg = con.getResponseMessage();
if(responseCode / 100 >= 4)
throw new Exception(url.toString()+": "+responseCode+" "+responseMsg);
readResponse(con);
con.disconnect();
}
catch(Exception e){
System.err.println("Exception occured: \\n"+e);
}
}
protected void readResponse(HttpURLConnection con){
String newSession = con.getHeaderField("Set-Cookie");
if(newSession != null){
session = newSession.substring(0,newSession.indexOf(";"));
System.err.println(con.getRequestMethod()+" "+con.getURL()+": Received cookie="+session);
}
//System.out.println("Headers : "+con.getHeaderFields());
// get new URL
url = con.getURL();
// get data
data = null;
try {
String line;
StringBuffer sb = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
while((line = reader.readLine()) != null){
sb.append(line);
sb.append("\\n");
}
data = sb.toString();
}
catch(IOException e){
System.err.println("Exception occured reading response: "+e);
}
}