java - 我想让我的应用程序从网站收集信息

标签 java android eclipse

我是 Android 开发方面的新手,目前对于我的“第一个项目”,我制作了一个应用程序,其中为我的学校存储了学校时间表(仅适用于我的同学)。现在我想扩展它,使应用程序连接到互联网并获取网站上存储的 scheudele,以便整个学校都可以使用该应用程序。

这是我整个学校时间表的链接:http://www.s-stps.tb.edus.si/dijaki/urniki.html

它是用我的母语编写的,所以你不会真正理解任何内容,但正如你所看到的,表格上方有 3 个不同的下拉菜单,这就是我希望我的应用程序具有的功能。一个下拉菜单,您可以在其中选择您所在的类(class),然后应用程序将连接到互联网并获取该类(class)的时间表并显示它,甚至可能下载它,这样就不需要进一步的互联网连接。

我知道我要求很多,对于不太了解 Android 编程的人来说,这将很难做到,但我有 2 个月的假期来做这件事,所以我会尝试一下。我将非常感谢一些有用的指导,以及关于如何开始这样做的建议。

最佳答案

您可以下载页面并解析html内容。下载页面应该很容易,举个例子:

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;

String url = "http://www.whatever.com";
String html = "";

HttpClient httpclient = new DefaultHttpClient();
request = new HttpGet(new URI(url));
HttpResponse response = httpclient.execute(request);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    response.getEntity().writeTo(out);
    out.close();
    html = out.toString();
}

这不能在主线程上运行,因此您需要使用 asynctask 或 runnable 来运行它。
对于解析,您可以使用 JSoup 。这里的问题不是使用 JSoup 本身,因为它很容易,而是破坏了文档结构。 这里是 JSoup 的 helloworld:

String html = "<html><head></head><body><p>asdasd1</p><p>asdasd2</p></body></html>";

Document doc = Jsoup.parse(html);
Elements p = doc.select("p");

for(int i=0;i<p.size();i++){
    Log.i("p",p.get(i).text());
}

关于java - 我想让我的应用程序从网站收集信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17001672/

相关文章:

java - Regex Java 非法/不支持的转义序列

java - 安卓工作室-混淆器 "java.io.IOException ...bin\classes (No such file or directory)"

android - 在 Android 上以编程方式检测和更改数据连接 (GPRS/UMTS)

java - Jasypt 的 propertyProviderClass 自定义实现不起作用

java - Android 显示 JSON 对象的值

java - 编辑器不包含主类型,尽管它包含

html - 我无法将 css 文件链接到 html 在 eclipse 上不起作用

java - If 和 else 同时声明虽然这不应该是可能的

Android:如何创建类似 YouTube 的 VR 控件?

java - 开机后,运行DialogFragment时出错