2011-03-17 2 views
1

J'essaie de publier des données de connexion à un formulaire afin de récupérer les cookies de la réponse. L'URL est: https://www.deviantart.com/users/loginJava POST HTTPsUrlConnection renvoie 200 réponse

Cependant, je ne peux pas obtenir le serveur 302, mais TROUVE revenir à seulement 200, donc je pense que je suis b0rking mon querystring ou les en-têtes d'une certaine manière:

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(); 
+1

Etes-vous sûr d'un POST à ​​https://www.deviantart.com/users/login avec un nom d'utilisateur et mot de passe valide renvoie un 302 et non 200 OK? J'ai essayé de me connecter en utilisant un navigateur et j'ai remarqué que la réponse est 200 OK et non 302. –

Répondre

0

En ce qui concerne Je sais, il est normal d'obtenir une réponse "200", signifie que votre demande a été reconnue et correctement répondu.

Mais quand j'ai besoin de connaître les réponses de code HTTP et quelques détails, j'utilise habituellement ce lien: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html.

Hope it helps ...

0

Une réponse 302 est une redirection ... dire le navigateur pour aller à une autre page. Une page de connexion de site le fait souvent pour envoyer l'utilisateur à une page «connexion réussie», ou à la page d'accueil ou à la page que l'utilisateur consultait à l'origine. Mais ce n'est pas nécessaire. Une réponse de 200 signifie "Réussi", et pour une requête POST, le navigateur restera sur la page de connexion. Je ne m'inquiéterais pas d'obtenir un 200 au lieu d'un 302. Si vous envoyez des demandes à partir d'une application Java, vous ne vous souciez probablement pas de l'endroit où le site vous redirige après la connexion. La chose qui importe est de savoir si vos informations d'identification ont été acceptées, et vous ne pouvez le déterminer qu'en essayant une requête qui nécessite une authentification. (Vous devez vous assurer que votre code capture les cookies définis par la réponse à votre POST de connexion et qu'ils doivent être fournis dans les demandes de suivi.)

Si vous craignez d'avoir "borked" l'URL de connexion query String, récupère la page de connexion et regarde sa source pour voir s'il y a des entrées cachées dans le formulaire.

Questions connexes