2011-04-04 36 views
0

我有一個奇怪的問題,分別是使用我自編的android應用程序的奇怪效果。解析HTML源代碼的奇怪行爲(WLan與移動互聯網(3G))

我的應用程序讀出網站的HTML源代碼並解析它以獲取我想要的信息。它的工作......呃,不是非常一致。

情況1:我在家中使用我的WLan並運行我的應用程序 - > All工作正常。所有需要的項目都可以在我的ListView中看到

情景2:我使用我的移動互聯網,例如Edge或HSDPA - >我的ListView僅顯示1個項目。所有的其他消失...

我不知道爲什麼。是否有任何超時,拘留應用程序讀出整個HTML網站?但所有其他項目將直接跟隨在HTML源代碼的下一行...

我不知道我該如何解決它。在谷歌上,我沒有找到其他人遇到同樣的問題。

的問候,朱利安

下面是一些代碼

// 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 
} 

這是所有我在我的應用程序做的到現在(除了在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我只得到三十秒鐘到火星...

+0

什麼時候HTML源代碼恰好中斷? – 2011-04-04 08:55:36

+1

不可能說出來,沒有HTML和解析代碼。然後這可能很困難。您確定該網站在兩種情況下都返回相同的HTML嗎?您最好的選擇是在調試模式下遍歷代碼,並找到代碼失敗的地方。順便說一句,你是否有網站所有者的許可,在你的應用中顯示他的數據? – RoToRa 2011-04-04 09:07:24

+0

是的,我有權限。在德國,沒有明確禁止使用公共領域網站的內容。順便說一下,它只是爲了我的私人使用來學習開發Android應用程序......嗯。我的模擬器仿效3G,呈現出正確的結果。我猜在這兩種情況下,它是相同的HTML。 – Julian 2011-04-04 09:12:29

回答

0

你總是可以嘗試發送它解析之前閱讀整個HTTP響應。這樣你就可以看到整個文檔被正確加載。

1

啊,我解決了它。我搜索,因爲它上面可以看出,這個代碼片斷

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)) 

固定它。