2017-09-24, 19:47:08
По долу копвам кода, който използвам. Този код си работи без проблем в 99% от случаите. Идеята му е да изтегля сорс кода на website. Използвам го в различни мои приложения за различни цели. Един пример е RSS четец на новини. Кода изтегля сорс кода на страницата и вече си манипулирам даниите (новините) и ги извеждам на екрана. Проблема е, че към един конкретен сайт с новини, кода не изтегля целия код на website-а в момента, а изтегля кода на website-а от преди 4 часа да кажем. Един вид някаква кеширана версия на сайта, а не в момента каквото има на него. Това ми прави проблем, защото при RSS четец, това извежда новините от преди 4 часа, а не последните качени от преди минути да кажем. Случвало ли ви се е нещо такова? Аз стигнах до извода, че самия сайт от който вземам информацията, има някакъв скрипт, който спира изтеглянето на момента, защото не намерих как да орпавя това приложението. Реално в браузъра виждам кода на сайта както е сега, а приложението ми връжа код, който е бил преди часове. Ето и кода, който използвам за изтегляне на информацията:
Фалшива тревога. Мисля, че го оправих с това urlConnection.addRequestProperty("User-Agent", "Foo?");
Ако имате подобен проблем, изглежда това е решението.
Код:
public String getXmlFromUrl(String link) {
String stream = "";
try {
URL url = new URL(link);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader r = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
stream = sb.toString();
urlConnection.disconnect();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return stream;
}
Фалшива тревога. Мисля, че го оправих с това urlConnection.addRequestProperty("User-Agent", "Foo?");
Ако имате подобен проблем, изглежда това е решението.