HttpURLConnection 没有按预期响应
HttpURLConnection does not respond as expected
我创建了一个免费托管帐户,我在其中获得了一个可以使用任何浏览器访问的免费域名。我可以在该网站上传文件。我已经正确配置了数据库。现在,我上传了以下 php 文件,代码如下:
<?php
require_once('connection.php');
$sql = 'SELECT date FROM Khatams';
$result = $conn->query($sql);
$khatam_dates = array();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$khatam_dates[] = $row['date'];
}
} else {
//echo "0 results";
}
echo json_encode($khatam_dates, JSON_FORCE_OBJECT);
$conn->close();
?>
而且我可以直接从浏览器访问此文件并按预期获得 json 对象。但是当我使用以下代码通过 Java 发送 GET 请求时:
URL url = new URL(SERVER_ADDRESS + file);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(httpURLConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder stringBuilder = new StringBuilder();
String line, result;
try {
while ((line = reader.readLine()) != null) {
stringBuilder.append(line + "\n");
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
result = stringBuilder.toString();
System.out.println(result);
我收到以下回复:(我对其进行了格式化;未格式化转储字符串)
<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("c32982e0cee9e5da81856753a7aef5ed");
document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+";
expires=Thu, 31-Dec-37 23:55:55 GMT;
path="/";
document.cookie="referer="+escape(document.referer);
location.href="http://ashubuntu.byethost9.com/fetch_khatam_dates.php?ckattempt=1";
</script>
<noscript>
This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support
<noscript>
</body>
</html>
出现这种反应的原因是什么?我对以下代码片段特别感兴趣:
<noscript>
This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support
<noscript>
看起来主机在将您重定向到您的实际页面之前设置了某种跟踪 cookie。
尝试从 Java 访问 http://ashubuntu.byethost9.com/fetch_khatam_dates.php?ckattempt=1
,看看是否可以通过这种方式解决问题。
编辑: 看起来像您发布的页面源中 URL 的 ?ckattempt=1
部分是用来计算重定向的尝试次数以检查是否确实设置了cookie。
您可能不走运 - 这是您为使用免费托管所付出的代价。我能想到的唯一方法是让网站相信您设置了 cookie(我不确定如何做到这一点,您必须 Java 发送正确的 plausible-looking cookie HTTP header).
中的名称
我创建了一个免费托管帐户,我在其中获得了一个可以使用任何浏览器访问的免费域名。我可以在该网站上传文件。我已经正确配置了数据库。现在,我上传了以下 php 文件,代码如下:
<?php
require_once('connection.php');
$sql = 'SELECT date FROM Khatams';
$result = $conn->query($sql);
$khatam_dates = array();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$khatam_dates[] = $row['date'];
}
} else {
//echo "0 results";
}
echo json_encode($khatam_dates, JSON_FORCE_OBJECT);
$conn->close();
?>
而且我可以直接从浏览器访问此文件并按预期获得 json 对象。但是当我使用以下代码通过 Java 发送 GET 请求时:
URL url = new URL(SERVER_ADDRESS + file);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(httpURLConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder stringBuilder = new StringBuilder();
String line, result;
try {
while ((line = reader.readLine()) != null) {
stringBuilder.append(line + "\n");
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
result = stringBuilder.toString();
System.out.println(result);
我收到以下回复:(我对其进行了格式化;未格式化转储字符串)
<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("c32982e0cee9e5da81856753a7aef5ed");
document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+";
expires=Thu, 31-Dec-37 23:55:55 GMT;
path="/";
document.cookie="referer="+escape(document.referer);
location.href="http://ashubuntu.byethost9.com/fetch_khatam_dates.php?ckattempt=1";
</script>
<noscript>
This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support
<noscript>
</body>
</html>
出现这种反应的原因是什么?我对以下代码片段特别感兴趣:
<noscript>
This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support
<noscript>
看起来主机在将您重定向到您的实际页面之前设置了某种跟踪 cookie。
尝试从 Java 访问 http://ashubuntu.byethost9.com/fetch_khatam_dates.php?ckattempt=1
,看看是否可以通过这种方式解决问题。
编辑: 看起来像您发布的页面源中 URL 的 ?ckattempt=1
部分是用来计算重定向的尝试次数以检查是否确实设置了cookie。
您可能不走运 - 这是您为使用免费托管所付出的代价。我能想到的唯一方法是让网站相信您设置了 cookie(我不确定如何做到这一点,您必须 Java 发送正确的 plausible-looking cookie HTTP header).
中的名称