Java POST HTTPsUrlConnection返回200响应

时间:2011-03-17 02:28:33

标签: java forms http-post httpurlconnection

我正在尝试将一些登录数据发布到表单,以便从响应中获取Cookie。 网址为:https://www.deviantart.com/users/login

但是我无法让服务器返回FOUND 302而只返回200,所以我认为我以某种方式查询我的查询字符串或标题:

try {
        String query = URLEncoder.encode("&username="+user+"&password="+password+"&remember_me=1", "UTF-8");
        URL url = new URL("https://www.deviantart.com/users/login");
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
        HttpsURLConnection.setFollowRedirects(false);

        conn.setRequestMethod("POST");
        conn.setRequestProperty("Host", "www.deviantart.com");
        conn.setRequestProperty("User-Agent", "Mozilla 4.0");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Content-Length", String.valueOf(query.length()));
        conn.setRequestProperty("Content-Language", "en-US");

        conn.setUseCaches(false);
        conn.setDoOutput(true);
        conn.setDoInput(true);

        PrintWriter out = new PrintWriter(conn.getOutputStream(), false);
        out.write(query);
        out.flush();

2 个答案:

答案 0 :(得分:0)

据我所知,获得响应“200”是正常的,这意味着您的请求得到了认可并得到了适当的回答。

但是当我需要知道HTTP代码响应和一些细节时,我通常会使用这个链接:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

希望它有所帮助...

答案 1 :(得分:0)

302响应是重定向...告诉浏览器转到另一个页面。站点登录页面通常会将用户发送到“登录成功”页面,或者返回主页或用户最初查看的页面。但它没有。

200响应意味着“成功”,对于POST请求将导致浏览器停留在登录页面。

我不担心获得200而不是302.如果您从Java应用程序发送请求,您可能不关心网站在登录后重定向您的位置。重要的是您的凭据是否已被接受,并且您只能通过尝试需要身份验证的请求来确定。 (您需要确保您的代码捕获由您的登录POST响应设置的cookie。它们需要在后续请求中提供。)

如果您担心登录URL查询字符串“borked”,请获取登录页面并查看其来源以查看表单中是否有任何隐藏的输入。