Java 尝试使用AsyncTask和Jsoup从url获取文本

Java 尝试使用AsyncTask和Jsoup从url获取文本,java,android,android-asynctask,html-parsing,jsoup,Java,Android,Android Asynctask,Html Parsing,Jsoup,URL只是像www.example.com/example.txt这样的文本文件,所以我需要做的是从网站获取整个文本。文本可以非常长,最大可达1MB。我不知道我应该如何修改我的代码来做到这一点 这是我的密码 private class Title extends AsyncTask<Void, Void, Void> { String text; @Override protected void onPreExecute() { super.

URL只是像www.example.com/example.txt这样的文本文件,所以我需要做的是从网站获取整个文本。文本可以非常长,最大可达1MB。我不知道我应该如何修改我的代码来做到这一点

这是我的密码

private class Title extends AsyncTask<Void, Void, Void> {
    String text;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progressDialog = new ProgressDialog(Story.this);
        progressDialog.setMessage("Loading");
        progressDialog.setIndeterminate(false);
        progressDialog.setCancelable(false);
        progressDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            Document document = Jsoup.connect(url).get();              
            text = document.text();    //I made this part up. Definitely WRONG
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        story.add(text);        //story is an array
        progressDialog.dismiss();
    }
}
私有类标题扩展了异步任务{
字符串文本;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
progressDialog=新建progressDialog(Story.this);
progressDialog.setMessage(“加载”);
progressDialog.setUndeterminate(false);
progressDialog.setCancelable(假);
progressDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
Document Document=Jsoup.connect(url.get();
text=document.text();//这部分是我编的,绝对错了
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
story.add(text);//story是一个数组
progressDialog.disclose();
}
}
我用
newtitle()调用它


这个代码不起作用,我无法获取文本。什么都没有发生。

您应该做的是将所有元素添加到一个
元素
对象中。见下文:

@Override
protected Void doInBackground(Void... params) {
    try {
        Document document = Jsoup.connect(url).get();              
    } catch (IOException e) {
        e.printStackTrace();
    }
    Elements elem = null; 
    elem = document.select("*");
    Log.i("Value of elem", String.valueOf(elem);
    return null;
}
然后,对于您的
onPostExecute

@Override
protected void onPostExecute(Void result) {
    String valueofelement = elem.text();
    story.add(valueofelement);        //story is an array
    progressDialog.dismiss();
   }
}

只是想知道,如果您正在读取文本文件,为什么要使用Jsoup和Document类?试试这个?doInBackground方法返回null,那么在onPostExecute上使用什么呢?我认为doInBackground必须返回某个要在PostExecute上使用的内容。请注意,在确保流关闭方面,答案似乎不完整,并且没有对请求设置超时,因此买家要小心。我在这里得到一个NullPointerExecution。。。对于(Element:elem),我修复了NPE,但是现在文本仍然没有加载,尽管我没有收到任何错误。这是我更新的代码,请尝试将其更改为迭代器,而不是使用
for
循环。这是带有迭代器文本的代码仍然没有加载。另外,由于数组故事填充了我的listview,它不是有数千个listview项目吗?我希望将整个文本添加为一个元素,从而有一个列表项。哦,这很有意义。请尝试此更新的代码。另外,检查我放在
elem
中的log语句,它实际上包含文本。