当前位置: 首页 > 知识库问答 >
问题:

Android-Jsoup。连接()。得到()

颛孙嘉玉
2023-03-14

我对使用jsoup很陌生,我只想问一下,我是否必须在公共静态void main中使用jsoup代码,就像我在网上研究时看到的那样,还是可以在任何其他方法中使用它。我和Jsoup也有问题。连接()。get()。我的应用程序在运行时总是停止。我已经添加了android。准许互联网连接到我的AndroidManifest。xml。我读了烹饪书,决定从解析文档开始,但仍然生成相同的结果——不幸的是,应用程序已经停止。我的minsdk版本是8,targetsdk版本是15。请容忍我。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Jsoup_2 extends Activity{
static String website_url = "http://www.google.com";

/**
 * @param args
 */
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_jsoupactivity);

    try{
         Document doc = Jsoup.connect(website_url).get();
        ((TextView)findViewById(R.id.label)).setText("Loading website");
    }catch (Exception e){
        ((TextView)findViewById(R.id.label)).setText("error");
    }
}
}

共有2个答案

谷玉韵
2023-03-14

轻量级

    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_jsoupactivity);
       final TextView tv = (TextView) findViewById(R.id.label);

       new Thread(new Runnable() {
           @Override
           public void run() {
               String str;
               try {
                   Document doc = Jsoup.connect(website_url).get();
                   str = "";
               } catch (Exception e) {
                   str = ",";
               }
               final String finalStr = str;
               tv.post(new Runnable() {
                   @Override
                   public void run() {
                      tv.setText(finalStr);
                  }
              });
          }
      }).start();

}

祁乐邦
2023-03-14

这是因为你在主线程中运行这段代码。您必须加入一个AsyncTask或另一个新线程。。。永远不要在主线程上执行繁重的操作(例如onCreate()方法)。

public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_jsoupactivity);

new AsyncTask(String,Integer,Document) {
  public Document doInBackground(String... params) {
   Document doc = null;
   try{
     doc = Jsoup.connect(params[0]).get();

    }catch (Exception e){
     doc = null;
    }

 return doc;
  }

 public void onPostExecute(Document result) {
   if (result != null) {
    ((TextView)findViewById(R.id.label)).setText("Loading website");
   } else {
    ((TextView)findViewById(R.id.label)).setText("Error");
   }
  }

}.execute(website_url);}}
 类似资料:
  • 我以前问过另一个问题,可以在Jsoup解析HTML问题上看到。我试图解析一个数据值从一个网站到我的android应用程序。我现在意识到,虽然在我的应用程序中,我给出了网页的url和我需要的数据,但当我从我的应用程序连接到url时,它总是连接到网站的登录页面,因此找不到要解析的数据。我在想有没有办法避免这种情况?

  • 我喜欢Jsoup解析html,但他们的连接有问题,我需要向同一个网站发送请求,但不同的查询参数,比如“id=XXX”,请求如下: 我不想为每个id创建新连接,而是为所有id请求保留一个连接,以下是我的代码: 但它似乎只适用于第一次,然后每次代码运行时都重复相同的请求,在这种情况下,我只能查询第一个id,即使我在其他时间传递了不同的id。我该怎么解决这个问题?

  • 问题内容: 我正在尝试创建一个应用程序,以从站点的多个页面上抓取内容。我正在使用JSoup进行连接。这是我的代码: 在大多数情况下,一切正常。但是,我想做一些事情。 首先,有时会返回404状态,或者会返回500状态,可能会返回301状态。在下面的代码中,它将仅打印错误并移至下一个URL。我想做的是尝试能够返回所有链接的url状态。如果页面连接,则打印200,否则打印相关的状态码。 其次,有时我会遇

  • 本文向大家介绍Android 得到连接热点的ip的方法,包括了Android 得到连接热点的ip的方法的使用技巧和注意事项,需要的朋友参考一下 下面给大家介绍Android 得到连接热点的ip的方法 ,具体代码如下所示: 其中IPAddress 是本机的IP地址,serverAddress 是你所连接的wifi热点对应的IP地址  当在Android设备终端上使用Wifi热点的时候,需要获知Wif

  • 问题内容: 我正在做一个https帖子,但是却得到ssl异常的一个例外,不受信任的服务器证书。如果我做正常的HTTP,它工作正常。我是否必须以某种方式接受服务器证书? 问题答案: 我正在猜测,但是如果你想进行实际的握手,则必须让android知道你的证书。如果你只想接受任何内容,请使用以下伪代码通过Apache HTTP Client获得所需的内容: CustomSSLSocketFactory:

  • 使用JSoup 1.6.3调用忽略Http错误(布尔值)时,我收到了这个错误 线程“main”java中出现异常。lang.Error:未解决的编译问题:类型连接的方法ignoreHttpErrors(布尔)未定义 我的设置有参考问题吗?知道怎么修吗? Eclipse在没有错误和1条警告的情况下验证代码。 以下代码无法编译。 编辑1 输出 嗯,完全不是我所期待的。我有jsoup-1.6.3。jar