Я пытаюсь получить определенный файл cookie в Java-клиенте, создав серию запросов Http.
Похоже, что я получаю действительный файл cookie с сервера, но когда я отправляю запрос на конечную ссылку с, по-видимому, действительным файлом cookie, я должен получить несколько строк XML в ответе, но ответ пуст, потому что файл cookie является неправильно или признано недействительным, потому что сессия закрылась или возникла другая проблема, которую я не могу выяснить.
Срок действия файла cookie, выданного сервером, истекает в конце сеанса.
Мне кажется, что cookie действителен, потому что, когда я делаю те же самые звонки в Firefox, аналогичный cookie с тем же именем и начинающийся с 3 первых одинаковых букв и одинаковой длины сохраняется в firefox, срок его действия также истекает в конец сессии.
Если я затем сделаю запрос к окончательному URL-адресу только с этим конкретным cookie-файлом, хранящимся в Firefox (удалил все остальные cookie-файлы), xml красиво отобразится на странице.
Есть идеи о том, что я делаю неправильно в этом куске кода?
Еще одна вещь, когда я использую значение из очень похожих файлов cookie, сгенерированных и сохраненных в Firefox в этом фрагменте кода, последний запрос дает обратную связь XML в ответе HTTP.
// Validate
url = new URL(URL_VALIDATE);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Cookie", cookie);
conn.connect();
String headerName = null;
for (int i = 1; (headerName = conn.getHeaderFieldKey(i)) != null; i++) {
if (headerName.equals("Set-Cookie")) {
if (conn.getHeaderField(i).startsWith("JSESSIONID")) {
cookie = conn.getHeaderField(i).substring(0, conn.getHeaderField(i).indexOf(";")).trim();
}
}
}
// Get the XML
url = new URL(URL_XML_TOTALS);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Cookie", cookie);
conn.connect();
// Get the response
StringBuffer answer = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
answer.append(line);
}
reader.close();
//Output the response
System.out.println(answer.toString())