Наше программное обеспечение написано с использованием Play! framework (версия 1.2.5), и нам нужно читать RSS-каналы. До сих пор это не было проблемой, но недавно мы столкнулись с RSS-каналом, который динамически создается с использованием javascript в событии onload.
В настоящее время мы используем следующий код:
URL url = new URL(this.url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36");
conn.setRequestProperty("Accept-Language", "en-US,en;q=0.8");
conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
conn.setRequestMethod("GET");
InputStream inputStream = conn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader rd = new BufferedReader(inputStreamReader);
String line;
while ((line = rd.readLine()) != null)
{
result += line;
}
Однако этого недостаточно в случае динамически создаваемого RSS, поскольку все, что мы получаем, — это HTML-страница, в которой указано, что javascript должен быть включен.
Я думаю, нам нужна какая-то встроенная веб-страница, но это похоже на использование кувалды, чтобы расколоть орех.
Есть ли альтернативы?
РЕДАКТИРОВАТЬ: после отключения javascript при просмотре RSS-канала все еще возвращались данные канала в формате XML, так что это несколько усугубило мое замешательство. Было высказано предположение, что некоторые RSS-каналы используют javascript для перевода своего канала с помощью XSLT, но ответ, который я получаю на запрос, таков:
«Этот сайт требует включения JavaScript и файлов cookie. Пожалуйста, измените настройки вашего браузера или обновите его». Так что я не совсем уверен, почему это происходит