我正在尝试将一些登录数据发布到表单,以便从响应中获取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();
答案 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”,请获取登录页面并查看其来源以查看表单中是否有任何隐藏的输入。