Goda mina vänner!
Jag har ett problem som jag hoppas kunna få lite hjälp med här. Håller på med en app där jag använder App Engine som backend, eftersom det är en hel del data som måste parsas, och jag vill undvika att göra det på telefonen.
För att komma åt den data som måste parsas så skickar jag en session cookie från klienten till servern, och gör därefter request till en tredje part.
Mitt problem är att det ibland skickas iväg två Cookies, trots att jag bara har lagt till en Cookie i min HttpUrlConnection. Antar att den andra Cookien som följer med är något gammalt som bara följer med, men jag förstår inte hur jag kan se till att den inte gör det.
Den Cookie jag lägger till själv ser ut såhär:
Cookie: PHPSESSID=q5r4uon05a32vhs29cd65sarv6
Den Cookie som bara "följer med" ser ut såhär
Cookie: $Version=0; PHPSESSID=hb94i7vopft13uaaob837lf3b0; $Path=/
Så, frågan är varför denna $Version=0 Cookie dyker upp, och hur jag kan se till att den INTE följer med mitt request? Jag har dubbel och trippelkollat, och det är INTE något som jag sätter dit själv!
Några förslag på hur jag kan lösa detta?
Den relevanta koden finns nedan.
Code:
ArrayList<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
URL page = null;
Scanner scanner = null;
Session session = null;
HttpURLConnection connection = null;
try {
link = link.replace("&", "&");
page = new URL(FS_PARTIAL_SESSION_URL + link);
StringBuilder sb = new StringBuilder();
Iterator<Cookie> cooks = cookies.iterator();
while(cooks.hasNext()) {
Cookie cookie = cooks.next();
sb.append(cookie.getName()+"="+cookie.getValue());
if (cooks.hasNext()) {
sb.append(";");
}
}
connection = (HttpURLConnection) page.openConnection();
connection.setRequestProperty("Cookie", sb.toString());
connection.setRequestProperty("Connection", "close");
connection.setUseCaches(false);
scanner = new Scanner(connection.getInputStream());
} catch (MalformedURLException e) {
log.log(Level.SEVERE, e.getMessage(), e);
} catch (IOException e) {
log.log(Level.SEVERE, e.getMessage(), e);
}
finally {
connection.getInputStream().close();
connection.disconnect();
}