无法使用 Jsoup 获取页面

Can't get the page using Jsoup

当它尝试在正常 java class 中寻呼时出现问题,一切正常,但如果已经在 android 应用程序中完成,答案就会出现 "you don't have permission to access" 虽然在 android 清单中指定了用户代理具有使用互联网的权限,并且所有这些都在一个单独的线程中,有人会遇到这个问题吗

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();
    }
}

你可以试试这个,设置你的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
                }
            }
        }

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

通常:如果使用 jsoup 拒绝连接,请检查请求(例如使用 chrome dev tools/F12 中的网络选项卡)并添加缺失的 header 字段。

示例代码

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();