我有一个奇怪的问题,分别是使用我自己编程的android应用程序的奇怪效果。
我的应用程序读取网站的HTML源代码,并解析它以获取我想要的信息。它起作用了..。哦,好吧,不太一致。
场景1:我在家里使用我的WLan并运行我的应用程序->一切正常。所有需要的项目都可以在我的ListView中看到
场景2:我使用我的移动互联网,比如Edge或HSDPA ->我的ListView只显示1个项目。其他人都消失了..。
我不知道为什么.会不会有超时,使应用程序无法读取整个HTML站点?但是所有其他项将直接跟随在HTML-source-code的下一行...
我不知道怎么才能修好它。在谷歌上,我找不到其他有同样问题的人。
向你致敬,朱利安
下面是一些代码
// 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中呈现arrayList之外)。您可以在浏览器中看到的站点源代码(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我只有30秒到火星的时间...
发布于 2011-04-05 14:36:38
啊,我解决了。正如上面所看到的,我使用以下代码片段进行了搜索
while ((line=reader.readLine()) != null)
{
if (line.contains(searchPattern))
al.add(line); //al is an ArrayList
}有了WLan (和我的模拟器),我真的为每个乐队都有了一个新的行,例如:
line1
line2
line3
....但是使用Edge或HDSPA时,我使用Wlan得到的所有线路都写在一行中。
line1line2line3....,使用我的正则表达式,当我找到所需的目标时,我会删除该行前后的所有内容。希望你能理解,用外语解释是很困难的。
一个简单的
while (line.contains(searchPattern))修好了。
发布于 2011-04-04 16:57:42
在发送http响应进行解析之前,您可以尝试读取整个http响应。这样你就可以看到整个文档都被正确加载了。
https://stackoverflow.com/questions/5536370
复制相似问题