Я пытаюсь подключиться к веб-сайту и запросить документ HTML.
public void anyAction() {
new HttpThread().start();
}
class HttpThread extends Thread {
public void run() {
try {
String url = "https://example.com/something"
Document doc = Jsoup.connect(url)
.timeout(30000)
.get();
// rest of the code
}
catch (IOException e) {
// print e.toString()
throw new RuntimeException(e);
}
}
}
, но doc
остается пустым, а остальная часть кода не будет выполнена. Кроме того, я не получаю никаких сообщений об ошибках, несмотря на перехват ошибок HttpStatusException
.
. Я обнаружил множество потоков с похожими проблемами, но ни одно из предложений не помогло мне. Я также попробовал:
Document doc = Jsoup.connect(url)
.ignoreContentType(true)
.referrer("http://www.google.com")
.maxBodySize(Integer.MAX_VALUE)
.header("Accept-Encoding", "gzip")
.userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0") //tried many different agents
.timeout(Integer.MAX_VALUE)
.followRedirects(true)
.get(); //also tried .post()
Это HTML -код сайта, который включает в себя бит javascript:
<html><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>This is the title</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="lib/jquery-1.2.min.js"></script>
<script type="text/javascript" src="lib/moment-with-locales.min.js"></script>
</head>
<body>
<table class="header">
<tbody><tr>
<td>
<div id="attr1" class="attr1"><div class="test">something</div></div>
</td>
</tr>
</tbody></table>
<div id="attr2" class="attr2" style="visibility: hidden;">something</div>
<div id="attr3" class="attr3" style="visibility: hidden;">something</div>
<div id="attr4" class="attr4" style="visibility: hidden;">something</div>
<div id="attr5" class="attr5" style="visibility: hidden;">something</div>
<div id="attr6" class="attr6" style="visibility: hidden;">something</div>
<div id="attr7" class="info">something</div>
<div id="attr8" class="attr8" style="visibility: visible;">something</div>
<script language="javascript">
function getParam ( strParamName ) {
strParams = document.location.search.substring ( 1 , document.location.search.length );
varParams = strParams.split ( '&' );
for (var intPos = 0; intPos < varParams.length; ++intPos ) {
varParam = varParams[intPos].split ( '=' );
if ( varParam[0] == strParamName ) {
return varParam[1];
}
}
}
function loadData (url) {
var mydata = null;
$.ajax({
url: url,
async: false,
dataType: 'json',
cache: false,
success: function (json) {
mydata = json; ;
},
error: function () {
mydata = null;
}
});
return mydata;
}
function initialize () {
display = new Object();
refreshRoomInfos();
insertData();
timer = window.setInterval ( "insertData()" , 30000 );
timer = window.setInterval ( "refreshRoomInfos()" , 60000 );
}
function refreshRoomInfos() {
var displayId = getParam('displayId');
var virtualNowDate = getParam('virtualNowDate');
var preview = getParam('preview');
var roomRestUrl;
if (typeof displayId === "undefined" || displayId === "") {
roomRestUrl = '../rest/displayService/get/rooms?roomId=' + getParam('roomId');
} else {
roomRestUrl = '../rest/displayService/get/rooms?displayId=' + displayId;
}
roomData = loadData(roomRestUrl);
if (typeof roomData !== "undefined" && roomData != null) {
var room = roomData[0];
if (typeof room !== "undefined" && room != null) {
var attr1 = room.displayName;
if (typeof attr1 === "undefined" || attr1 === "") {
attr1 = room.name;
}
display.roomId = room.id;
fillHTML('room', "<div class=\"test\">" + attr1 + "</div>");
if (typeof room.additionalDisplayText !== "undefined" && room.additionalDisplayText != null) {
fillHTML('attr7', room.additionalDisplayText);
}
}
}
}
function insertData() {
if (typeof display.roomId !== "undefined") {
+ "&virtualNowDate=" + virtualNowDate
+ "&preview=" + preview
var apptURL = '../rest/displayService/get/appointments/' + display.roomId + '/50?displayFlag=false';
var virtualNowDate = getParam('virtualNowDate');
if(virtualNowDate){
apptURL += "&virtualNowDate=" + virtualNowDate;
}
var preview = getParam('preview');
if(preview){
apptURL += "&preview=" + preview;
}
var appointments = loadData(apptURL);
var appointment = getCurrentAppointment(appointments);
if (appointment != null) {
setVisibleHTML('attr2', 'visible');
setVisibleHTML('attr5', 'visible');
setVisibleHTML('attr6', 'visible');
setVisibleHTML('attr3', 'visible');
setVisibleHTML('attr4', 'visible');
setVisibleHTML('attr8', 'hidden');
var belosEvent = appointment.event;
// Titel des Appointments
var title = appointment.displayTitle;
if (typeof title === "undefined"
|| title === "") {
title = belosEvent.attr4;
if (typeof appointment.subattr4 !== "undefined" && appointment.subattr4 !== ""
&& appointment.subattr4 !== title) {
title += " - " + appointment.subattr4;
}
}
// Startdatum des Appointments
var dateFrom = moment(appointment.startDate).toDate();
var dateFromString =
dateFrom.getHours()
+ ":"
+ (dateFrom.getMinutes().toString().length === 1 ? "0" + dateFrom.getMinutes() : dateFrom.getMinutes());
// Enddatum des Appointments
var dateTo = moment(appointment.endDate).toDate();
// dateTo.setTime(appointment.endDate);
var dateToString =
dateTo.getHours()
+ ":"
+ (dateTo.getMinutes().toString().length === 1 ? "0" + dateTo.getMinutes() : dateTo.getMinutes());
//falls mehrtägiger Termin
if(!(dateFrom.getDate()===dateTo.getDate()&&dateFrom.getMonth()===dateTo.getMonth()&&dateFrom.getFullYear()===dateTo.getFullYear())){
//falls Date-Parameter über URL übergeben wurde
if(paramD!==null&¶mD!==undefined){
//falls heute nicht zwischen Terminbeginn und Terminende oder nicht der der letzte Tag des mehrtägigen Termins ist
if(!((!(now.getDate()===dateFrom.getDate()&&now.getMonth()===now.getMonth()&&now.getFullYear()===dateFrom.getFullYear())&&
!(now.getDate()===dateTo.getDate()&&now.getMonth()===dateTo.getMonth()&&now.getFullYear()===dateTo.getFullYear)&&
dateFrom.getTime()<now.getTime()&&now.getTime()<dateTo.getTime())||
now.getDate()===dateTo.getDate()&&now.getMonth()===dateTo.getMonth()&&now.getFullYear()===dateTo.getFullYear())){
now = paramD;
}
}
//falls heute erster Tag, dann behalte Startuhrzeit bei, ansonsten setze sie auf 00:00
dateFromString = dateFrom.getDate()===now.getDate()&&dateFrom.getMonth()===now.getMonth()&&dateFrom.getFullYear()===now.getFullYear() ? dateFromString : "00:00";
//falls heute letzter Tag, dann behalte Enduhrzeit bei, ansonsten setze sie auf 23:59
dateToString = dateTo.getDate()===now.getDate()&&dateTo.getMonth()===now.getMonth()&&dateTo.getFullYear()===now.getFullYear() ? dateToString : "23:59";
}
// Organisator des Appointments
var attr6 = belosEvent.attr6.lastname;
if (typeof belosEvent.attr6.firstname !== "undefined"
&& belosEvent.attr6.firstname !== "") {
attr6 += ", " + belosEvent.attr6.firstname;
}
if (belosEvent.attr6.lastname === "System"
&& belosEvent.attr6.firstname === "System") {
attr6 = null;
}
fillHTML('attr2', dateFromString + " - " + dateToString + " Uhr");
fillHTML('attr6', attr6);
fillHTML('attr4', title);
} else {
setVisibleHTML('attr2', 'hidden');
setVisibleHTML('attr5', 'hidden');
setVisibleHTML('attr6', 'hidden');
setVisibleHTML('attr3', 'hidden');
setVisibleHTML('attr4', 'hidden');
setVisibleHTML('attr8', 'visible');
}
}
}
function setVisibleHTML(fieldId, visible) {
//alert(fieldId);
var elem = document.getElementById(fieldId);
elem.style.visibility = visible;
}
function fillHTML(fieldId, value) {
var elem = document.getElementById(fieldId);
elem.innerHTML = value;
}
function getCurrentAppointment(appointments) {
var appointment = null;
var now = new Date();
var virtualNowDate = getParam('virtualNowDate');
if(virtualNowDate){
now = virtualNowDate;
}
console.log("virtualNowDate " + virtualNowDate);
console.log("NOW " + now);
if (appointments != null && appointments.length > 0) {
console.log("appointments not null and length > 0 ");
for (var i = 0; i < appointments.length; i++) {
appointment = appointments[i];
if (appointment != null && now <= moment(appointment.endDateWaiting).toDate()) {
return appointment;
}
appointment = null;
}
}
return appointment;
}
initialize();
</script>
</body></html>