无法使用Jsoup获取页面

时间:2016-10-04 18:46:55

标签: android jsoup httpurlconnection

尝试在普通的java类中进行翻页时出现问题,一切正常,但如果在Android应用程序中已经完成,那么答案就会出现"您无权访问&#34 34;虽然在android清单中指定了user-agent有权使用Internet而且所有这些都在一个单独的线程中,有人可能会遇到这个问题

public void onClick(View view)
{
    new Thread(new Runnable() {
        @Override
        public void run()
        {
            go();
        }
    }).start();
}
 private void go()
{

    try {
        document = Jsoup.connect("http://issa.beltelecom.by/main.html").userAgent("Chrome 53.0.2785.143").ignoreHttpErrors(true).get();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

2 个答案:

答案 0 :(得分:0)

您可以尝试此操作,将OnClickListener设置为调用后台任务。

new MyAsyncTask().execute();

然后执行您的任务

private class MyAsyncTask extends AsyncTask<Void, Void, Boolean> {

            protected void onPreExecute() {
                super.onPreExecute();
                //do anything here
            }

            protected Boolean doInBackground(Void...param) {

                Document document = null;
                try {
                    document = Jsoup.connect(getString(R.string.your_url_string)).get();

                } catch (IOException e) {
                    e.printStackTrace();
                }

                if (document != null) {
                    Elements yourElements = document.select("#element_id");

                    //Do anything here
                    return true;
                }
                //Document is null
                return false;
            }

            protected void onPostExecute(Boolean result) {
                if(result==true) {
                    // do this
                }
            }
        }

答案 1 :(得分:0)

设置Accept标头字段(注意:在Android 5.1.1设备上测试)似乎很重要。

一般情况下:如果使用jsoup拒绝连接,请检查请求(例如使用chrome dev tools / F12中的networks选项卡)并添加缺少的标题字段。

示例代码

String userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36";
String url = "https://issa.beltelecom.by/main.html";
String acceptValue = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
String host = "issa.beltelecom.by";

document = Jsoup.connect(url).header("Accept",acceptValue).header("Host", host).userAgent(userAgent).get();