Jsoup.connect引发错误

时间:2014-09-16 05:19:44

标签: android

我想解析html页面并提取数据但是当我尝试连接Jsoup时会抛出错误。 当我使用httpclient连接时[String s = EntityUtils.toString(response.getEntity()," UTF-8");] 我能够存储到字符串中的html页面内容没有问题。但是对于Jsoup,我无法做到。我做错了吗?

    package com.example.flashcardsdemo;

import java.io.InputStream;

import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.w3c.dom.Element;

//import com.example.flashcards.MainActivity.Gethtml;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

    Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context=this;
        Gethtml Ght = new Gethtml();
        Ght.execute();
    }

    public class Gethtml extends AsyncTask {
        ProgressDialog dialog;
        String UrlLink = "http://en.wikipedia.org/";
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            dialog = new ProgressDialog(context);
            dialog.setTitle("Loading");
            dialog.setMessage("Html....");
            dialog.show();
        }

        @Override
        protected Object doInBackground(Object... params) {
            try {
                HttpClient client = new DefaultHttpClient();
                HttpGet request = new HttpGet(UrlLink);
                HttpResponse response = client.execute(request);
                StatusLine line = response.getStatusLine();
                int statuscode = line.getStatusCode();
                if (statuscode != 200) {
                    return null;
                }

                Document doc  = Jsoup.connect(UrlLink).get();

            }

            catch (Exception e) {
                Log.v("Error", e.toString());
            }

            return null;
        }



        @Override
        protected void onPostExecute(Object result) {
            dialog.dismiss();

        }
    }   
}

LogCat图片:       [1]:http://i.stack.imgur.com/Q6bDv.png       [2]:http://i.stack.imgur.com/TBxUB.png

1 个答案:

答案 0 :(得分:0)

确保您的JSoup jar文件与其余代码一起导出。请执行以下操作

右键单击Project

Java构建路径

订单和出口

选中Jsoup jar条目旁边的框。

然后将应用重新加载到您的模拟器或设备上。

您还应该清理项目

右键单击Project-> 点击Android工具 - > 单击修复项目属性 然后单击项目 清洁

如果仍然无效,请执行以下操作:

删除旧的导出并在项目中创建一个libs /目录(作为src /,res /等的对等),如果你还没有。然后,将JSoup JAR放在libs /目录中。这将把它添加到您的构建路径并将其内容包含在您的APK文件中。