在网站中搜索的Android服务

时间:2013-10-27 12:37:25

标签: android service

这是我的第一个主题,所以请耐心等待。 :)

我想创建一个搜索网站上特定字符串的Android服务。为此,我尝试下载该网站并在html代码中搜索,但是在尝试下载时应用程序总是崩溃。

有人知道怎么做吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

当我开始制作一个能够扫描imdb.com获取电影信息的Android应用时,我遇到了一个similer问题。经过大量的互联网搜索和测试后,我想出了这个:

import java.net.*;
import java.io.*;

URL url = new URL("websiteToLookAt");
InputStreamReader isr = new InputStreamReader(url.openStream());
BufferedReader bufferedReader = new BufferedReader(isr);

String lineThatIsBeingRead = null;
String theString;

while((lineThatIsBeingRead = bufferedReader.readLine()) != null){

    if(lineThatIsBeingRead.contains("StringYouAreLookingFor")){
        theString = lineThatIsBeingRead;
        break;
    }
}
  • 第一行设置您正在扫描的网站的网址
  • 第二行打开互联网,允许您直接访问html源
  • 第三行制作了一个能够读取InputStreamReader提供的源的缓冲读者
  • 第五行是当缓冲的阅读器检查其是否包含正确的字符串时,当前HTML源代码行所在的字符串。 (string1.contains(string2)查看是否有字符串string2在string1中。例如:String myName = "john";如果你要测试myName.contains("oh");它是否会返回true)
  • 第六行是您要从HTML源代码中找到要查找的字符串的字符串(就像您要查找电影的名称一样,这将是您想要的字符串将名称分配给)
  • 每次循环重复时,while循环读取html源代码的下一行,并将刚刚读取的行设置为String变量 lineThatIsBeingRead 。只要有新行要阅读,它就会继续这样做。当缓冲的阅读器到达HTML源的末尾时,while循环的条件返回false并且它会中断循环。
  • if statment 检查 lineThatIsBeingRead 是否包含字符串 StringYouAreLookingFor 。如果是这样,它会将theString(您要查找的字符串)设置为 lineThatIsBeingRead (缓冲读取器中的字符串),然后它会中断while循环。否则,它会重置while循环并重新开始。

我有变量 theString ,因为我正在寻找几个字符串,但是如果你只需要找到一个字符串就可以删除第6行和第6行。 11,只需将 lineThatIsBeingRead 作为您指定要查找的字符串的字符串。

要记住的另一件事是java不允许你通过UI线程连接到互联网(java希望你这样做的方式是有意图所以当你发布应用程序时记得把它拿出去让它在意图上运行)。但如果你添加

if(BuildVERSION.SDK_INT >= 9){
    StrickMode.ThreadPolicy Policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

    StrictMode.setThreadPolicy(Policy);
}

到onCreate()方法,它将绕过该规则。

希望这对你的项目很有帮助,祝你好运!