У меня есть приложение Java, которое извлекает данные с сервера, читая эхо скрипта php.Как читать php-эхо с сервера через java без необходимости в javascript-странице?
Я использую этот код:
String url = new UrlBuilder(URL)
.addParameter("option", "read")
.toString();
BufferedReader br = null;
try { br = new BufferedReader(new InputStreamReader(new URL(url).openStream(), "UTF-8")); }
catch (IOException e) { e.printStackTrace(); }
String out = "", line;
try {
while ((line=br.readLine()) != null) {
out += line;
}
} catch (IOException e) { e.printStackTrace(); }
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return out;
UrlBuilder только кодирующий мой URL
Ответ Я получаю это автоматически созданный сайт, который говорит, что нужно JavaScript активированного для доступа к сайту:
<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("261516e5343951a035c7cc4ad11521ef");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; document.cookie="referrer="+escape(document.referrer); location.href="[servers url here]";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>
Итак, как я читаю фактический контент/источник файла? Или как я могу предотвратить создание сервером файла?
1.Attempt: Извлечение значения печенья:
try {
URL myUrl = new URL(URL+"?option=read");
URLConnection urlConn = myUrl.openConnection();
urlConn.connect();
String headerName=null;
for (int i=1; (headerName = urlConn.getHeaderFieldKey(i))!=null; i++) {
if (headerName.equals("__test")) {
String cookie = urlConn.getHeaderField(i);
cookie = cookie.substring(0, cookie.indexOf(";"));
String cookieName = cookie.substring(0, cookie.indexOf("="));
String cookieValue = cookie.substring(cookie.indexOf("=") + 1, cookie.length());
System.out.println(cookieName);
System.out.println(cookieValue);
}
}
} catch(Exception e) {
e.printStackTrace();
}
Выход = нет ...
Где моя ошибка?
эхо является лишь частью выхода. вы можете передать его в приложение в качестве аргумента? php myfile.php | java mytest.class – Fallenreaper
Приложение ist делает чтение не только в начале – Error404
Java не просто получает сайт, который говорит, что вам нужен JavaScript. Это дает вам весь сайт, включая неинтерпретируемый JavaScript-код. Сообщение об отсутствии JavaScript является частью HTML, который фактически написан как предупреждение для браузеров. Единственными данными, которые PHP генерирует каждый раз, являются эти шестнадцатеричные строки. Остальные (включая JS) являются шаблонами. Java не интерпретирует JavaScript, поэтому вам придется перевести этот код JavaScript на Java или найти способ запуска JavaScript. – LinuxDisciple