странное поведение при разборе HTML-исходного кода (WLan против мобильного Интернета (3G)) - PullRequest
0 голосов
/ 04 апреля 2011

У меня любопытная проблема, соответственно странный эффект от использования моего самопрограммируемого приложения для Android.

Мое приложение считывает HTML-исходный код веб-сайта и анализирует его для получения необходимой информации. И это работает ... да ладно, не совсем последовательно.

Сценарий 1: я использую свой WLan дома и запускаю свое приложение -> Все работает нормально. Все нужные предметы можно увидеть в моем ListView

Сценарий 2: я использую свой мобильный Интернет, например Edge или HSDPA -> Мой ListView представляет только 1 элемент. Все остальные исчезли ...

Я не знаю почему. Может ли быть какой-то тайм-аут, который задерживает приложение для считывания всего HTML-сайта? Но все остальные элементы будут непосредственно следовать в следующей строке HTML-исходного кода ...

Понятия не имею, как мне это исправить. В Google я не нашел никого другого с такой же проблемой.

С уважением, Джулиан

Вот код

    // With this I get the HTML-source-code
URL url = new URL("http://www.area4.de);
URLConnection conn = url.openConnection();
DataInputStream dataIn = new DataInputStream(conn.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(dataIn, "UTF-8"));
String line;

// Then I parse the code with 
while ((line=reader.readLine()) != null)
{
   if (line.contains(searchPattern))
       al.add(line); //al is an ArrayList
}

Это все, что я делал в своем приложении до сих пор (кроме представления arrayList в ListView). Исходный код сайта вы можете увидеть в своем браузере (Ctrl + u). Я ищу эти строки

<a href="/de/bands/thirty-seconds-to-mars/" class="Schrift_22">THIRTY SECONDS TO MARS //</a>
<a href="/de/bands/dropkick-murphys/" class="Schrift_20_dunkel">DROPKICK MURPHYS //</a>

С 3G я получаю только тридцать секунд до марса ...

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Ах, я решил это. Я искал, как видно выше, этот фрагмент кода

while ((line=reader.readLine()) != null)
{
   if (line.contains(searchPattern))
       al.add(line); //al is an ArrayList
}

С WLan (и моим эмулятором) у меня действительно есть новая линия для каждой группы e. g.:

line1
line2
line3
....

Но с Edge или HDSPA все строки, которые я получаю с Wlan, пишутся в одну строку.

line1line2line3.... И с моим регулярным выражением я делаю все до и после строки, когда нахожу желаемую цель. Надеюсь, вы понимаете, это трудно объяснить на иностранном языке.

Простой

while (line.contains(searchPattern))

исправил.

0 голосов
/ 04 апреля 2011

Вы всегда можете попробовать прочитать весь http-ответ перед отправкой на анализ. Таким образом, вы видите, что весь документ загружен правильно.

...