Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 程序无法登录网站_Java_Http - Fatal编程技术网

Java 程序无法登录网站

Java 程序无法登录网站,java,http,Java,Http,这是我的代码: URL url = new URL("http://superchillin.com/login2.php"); HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); urlConnection.setUseCaches(false); urlConnection.setRequestMethod("POST");

这是我的代码:

        URL url = new URL("http://superchillin.com/login2.php");
        HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();

        urlConnection.setUseCaches(false);
        urlConnection.setRequestMethod("POST");
        String data = "email="+URLEncoder.encode(name, "UTF-8")+"&password="+URLEncoder.encode(pass, "UTF-8");

        urlConnection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        urlConnection.setRequestProperty("Accept-Encoding", "gzip,deflate");
        urlConnection.setRequestProperty("Accept-Language", "en-US,en;q=0.8,lt;q=0.6");
        urlConnection.setRequestProperty("Cache-Control", "max-age=0");
        urlConnection.setRequestProperty("Connection", "keep-alive");
        urlConnection.setRequestProperty("Content-Length", Integer.toString(data.getBytes().length));
        urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        urlConnection.addRequestProperty("Cookie", "place=1");
        urlConnection.addRequestProperty("Cookie", "lvca_unique_user=1");
        urlConnection.setRequestProperty("Host", "superchillin.com");
        urlConnection.setRequestProperty("Origin", "http://superchillin.com");
        urlConnection.setRequestProperty("Referer", "http://superchillin.com/login.php");
        urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36");


        urlConnection.setDoOutput(true);
        urlConnection.setDoInput(true);
        urlConnection.setInstanceFollowRedirects(true);


        DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
        wr.writeBytes(data);
        wr.flush();
        wr.close();
在这段代码之后,我只读取响应。它将我重定向到“login.php”,并试图设置cookie“place=1”

通过浏览器连接效果很好。之所以有这么多的标题,是因为我认为它们可能是问题所在,所以我复制了使用浏览器时看到的所有标题

响应代码是200

我还注意到,如果密码或电子邮件不正确,我检索到的HTML中会有这样一条消息


当我使用浏览器时,我会被重定向到index.php并设置cookie“auth”。这也是我对我的计划的期望。现在我被重定向回“login.php”。

恐怕这个问题没有通用的答案。您要问的是“当我发送这个确切的请求时,为什么远程服务器不返回一个
auth
cookie?”这完全取决于服务器的文档对这些请求的描述,以及它的实现中是否有任何bug,等等

如果您无法访问服务器自己的源代码和日志,那么您很可能不得不通过实验来解决问题。使用Firebug或Chrome的开发工具等工具,在登录成功后捕获浏览器发送的确切请求。由于这些文本字符串是远程服务器看到的唯一内容,如果您使用Java程序完全复制它们,您将(/应该)得到完全相同的响应

如果您认为您正在从Java发送相同的请求,并且发现仍然没有得到预期的响应,那么肯定存在一些差异。尝试使用Wireshark之类的工具记录网络流量,以便准确查看应用程序发送的内容,然后解决这些差异


如果你到了某个点,例如重定向没有被遵循,并且你不确定如何使用
URLConnection
-那么这是一个很好的具体问题。

这不是一个很好的问题,因为我们不清楚具体的问题是什么。你期望什么样的产出?你得到了什么输出(即,为了确定登录失败,你测量了什么)?我添加了更多信息。我希望被重定向到index.php,目前我被重定向到login.php。注意,我将请求发送到一个名为“login2.php”的文件,就是这样。我正在使用谷歌Chromes开发工具查看和复制请求。我尝试使用Wireshack,但找不到对该服务器的请求