尝试在普通的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();
}
}
答案 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();