Нашел бесплатный API по РЖД и решил для себя, и своего обучения написать простого телеграмм бота по поиску билетов.
Но у меня не получается правильно получить одноразовый код. Суть проста, сперва надо отправить запрос "
https://pass.rzd.ru/timetable/public/ru?layer_id=5...}} "
где необходимо подставить нужные данные и получить одноразовый код RID. Его необходимо подставить в следующий запрос и получить JSON с нужной инфой.
"
https://pass.rzd.ru/timetable/public/ru?layer_id=5...}}"
Вот мои код, и проблема в том, что я получаю как будто "юзаный" код и ржд выдает ошибку
{"result":"FAIL","type":"SESSION_EXPIRED","error":"Сессия истекла. Пожалуйста, попробуйте обновить страницу.","timestamp":"15.11.2021 18:51:58.103"}
public void findTickets(String from,String to,String date) {
StringBuffer content = new StringBuffer();
try {
URL url = new URL("https://pass.rzd.ru/timetable/public/ru?layer_id=5827&dir=0&tfl=3&checkSeats=1&code0=" + from + "&dt0=" + date + "&code1=" + to);
URLConnection urlConnection = url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
content.append(line);
}
bufferedReader.close();
} catch (Exception e){
System.out.println("EROR "+e.getMessage());
}
JSONObject obj = new JSONObject(content.toString());
long rid=0;
rid=obj.getLong("RID");
try {
URL url = new URL("https://pass.rzd.ru/timetable/public/ru?layer_id=5827&rid="+rid);
URLConnection urlConnection = url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
while ((line=bufferedReader.readLine())!=null){
content.append(line);
}
bufferedReader.close();
}catch (Exception e){
System.out.println(e.getMessage());
}
System.out.println(content.toString());
}