HttpURLConnection没有按预期响应

时间:2015-12-01 15:57:06

标签: java php httpurlconnection

我创建了一个免费托管帐户,我获得了一个可以使用任何浏览器访问的免费域名。我可以在该网站上传文件。我已正确配置数据库。现在,我已经上传了以下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>

1 个答案:

答案 0 :(得分:3)

在将您重定向到实际页面之前,托管似乎正在设置某种跟踪Cookie。

尝试从Java访问http://ashubuntu.byethost9.com/fetch_khatam_dates.php?ckattempt=1,看看你是否可以通过这种方式解决问题。

编辑:看起来像您发布的网页来源中的?ckattempt=1部分,可以计算重定向的次数以检查Cookie是否确实已设置。

您可能运气不好 - 这是您使用免费托管所支付的价格。我能想到的唯一方法就是让网站相信你已经设置了cookie(我不确定如何做到这一点,你必须让Java发送一个看似合理的cookie的正确名称。 HTTP标头)。