Jeg har skrevet en java kode som skulle gå ind på en side og gemme en cookie som bliver sat til senere brug. Problemet er, at jeg godt kan finde cookie'en i svaret fra webserveren, men den vil ikke ændre min string som skal returneres fra funktionskaldet.
- @SuppressWarnings("null")
- public String getCake() {
- String retur = null;
- int omar = 0;
- String[] cookieIs = null;
-
- log("Henter access Cookien");
- try {
- cookieMonster = new Socket("x.x.x", 80);
- } catch(UnknownHostException uhe) {
- log("Fejl ved program: ukendt hostnavn");
- } catch(IOException ioe) {
- log("Kunne ikke oprette forbindelse");
- }
-
- log("Forbindelse til xs webserver: oprettet");
-
- try {
- inC = cookieMonster.getInputStream();
- outC = cookieMonster.getOutputStream();
- String line = System.getProperty("line.separator");
- String data = "x=x";
- writeC = "POST /x.x HTTP/1.1" + line
- + "Host: x.x.x" + line
- + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" + line
- + "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + line
- + "Accept-Language: da,en-us;q=0.7,en;q=0.3" + line
- + "Accept-Encoding: gzip,deflate" + line
- + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" + line
- + "Connection: keep-alive" + line
- + "Cookie: " + cookie + line
- + "Referer: xxx" + line
- + "Content-Type: application/x-www-form-urlencoded" + line
- + "Content-Length: " + data.length() + line
- + line + data;
- // + "" + line
- log("Henter Cookie fra xs webserver");
- outC.write(writeC.getBytes());
-
- int MAX_SIZE = 1024; //16k
- byte[] buffer = new byte[MAX_SIZE];
- int fra = 0;
- int read;
- String allOutC = "";
-
- log("Læser respons fra server");
- while((read = inC.read(buffer)) > 0) {
- //read = inC.read(buffer, 0, MAX_SIZE);
- String replyC = new String(buffer, fra, read);
- allOutC += replyC;
- log("Server svar: "+replyC);
- /*if(read < MAX_SIZE) {
- break;
- }*/
- }
- log("server svar: "+allOutC);
- log("Finder Cookie i rodet");
- if(allOutC.contains("Set-Cookie")) {
- String[] analyse = allOutC.split(line);
- String[] setCookie;
- //String[] cookieIs = null;
- for(int i = 0;i<analyse.length;i++) {
- setCookie = analyse[i].split(":");
- if(setCookie[0] == "Set-Cookie") {
- cookieIs[omar] = setCookie[1].split(";")[0];
- omar++;
- retur = "";
- }
- }
- }
- for(int i = 0;i<omar;i++) {
- retur += cookieIs[omar];
- }
- //retur = retur;
- log("Cookie: "+ retur);
-
- cookieMonster.close();
-
- } catch(IOException e) {
- log("Der skete en fejl i forbindelsen:" + e.toString());
- }
- log("Returnere cookie til app for at logge ind");
- return retur;
- }
inC, outC, writeC og CookieMonster er allerede defineret tidligere i class'en.
Jeg har et event som venter på at man trykker på en knap i app'en og så kalder den:
String cookie = getCake();
log() funktionen gør bare det at den skriver i en textbox.
Det der går mig mest på, er at jeg har en meget lignende funktion som jeg har skrevet i PHP og den virker bare hver gang!
Al hjælp er virkelig værdsat!
Indlæg senest redigeret d. 15.03.2012 11:01 af Bruger #17125