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

使用Jsoup从url获取数据时发生停止工作错误

花稳
2023-03-14

我是Android编程的业余爱好者。我使用Jsoup从一个网站获取html并将其放入textview,但我得到了错误。我该怎么解决这个?

我的代码:

package com.example.hashtag.asdasd;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    Document siteDoc;
    String a;
    Elements p;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn= (Button) findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new siteGetter().execute();
            }
        });
    }

    private class siteGetter extends AsyncTask < Void, Void, String>{

        @Override
        protected String doInBackground(Void... voids) {
            try {
                siteDoc = Jsoup.connect("http://hashtagedu.ir").get();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            return null;
        }
    }

    public void displaydata(){
        p = siteDoc.getElementsByTag("p");
        a=p.text();
        TextView tv= (TextView) findViewById(R.id.textView);
        tv.setText(a);
    }
}

我的错误:

共有1个答案

晁开宇
2023-03-14

除了设置权限 之外,您当前不调用displaydata(),如果您从后台任务调用,则应该设置一个处理程序,用于调用ui线程上的更改:

public class MainActivity extends AppCompatActivity {

    Handler uiHandler = new Handler();

    Document siteDoc;
    String a;
    Elements p;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn= (Button) findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new siteGetter().execute();
            }
        });

    }

    private class siteGetter extends AsyncTask < Void, Void, String>{

        @Override
        protected String doInBackground(Void... voids) {
            try {
                siteDoc = Jsoup.connect("http://hashtagedu.ir").get();
                displaydata();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            return null;
        }
    }

    public void displaydata(){
        p = siteDoc.getElementsByTag("p");
        a=p.text();

        uiHandler.post(new Runnable() {
            @Override
            public void run() {
                TextView tv= (TextView) findViewById(R.id.textView);
                tv.setText(a);
            }
        });
    }
}

关于向ImageView添加下载图像(如已删除问题中所问)(假设id为r.id.ImageView)

Bitmap bitmap;

public void displaydata(){
    p = siteDoc.getElementsByTag("p");
    a=p.text();
    String imageUrl = siteDoc.select("img").first().attr("abs:src");
    bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
    uiHandler.post(new Runnable() {
        @Override
        public void run() {
            TextView tv= (TextView) findViewById(R.id.textView);
            tv.setText(a);

            ImageView i = (ImageView)findViewById(R.id.imageView);
            i.setImageBitmap(bitmap);
        }
    });
}
 类似资料:
  • 我使用以下函数从密码保护的https url接收xml文件。 在我们的服务器将php更新到7.0版本之前,一切正常。22 在那之后,我再也不能接收xml文件了。我只是得到一个空洞的回答。有人知道为什么吗? 编辑:我不知道什么php版本安装之前,我们不能降级。

  • 我只是下载了最新版本的j汤(1.7.1)并遵循官方代码(更改了url)。然后我得到了“超文本传输协议错误获取url” 我的代码有什么问题?似乎错误只是发生在Android项目,因为我在一个工作正常的Java项目做同样的事情。 注意:-我已经添加了Internet权限

  • 尝试使用Jsoup而不是网站API从网站上练习和获取信息。我的代码没有错误,但文本字段没有更改。它只是给我一个空白。我如何从网站上获取信息?我正试图获取主要新闻,以便在我的网站上发布。 我的代码:

  • 从数据库获取数据时出错: 那我该怎么解决呢?

  • 所以我尝试从pretag获取数据,我设置doc连接到url选择pretag,结果出错了,我需要获取的数据按这里

  • 我想从下面列出的URL中删除HTML代码。问题是,我得到了这个错误:- 2016年8月14日下午6:40:36。主要严重错误:空组织。jsoup。HttpStatusException:获取URL时发生HTTP错误。状态=504,URL=http://www.bkstr.com/webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalog