登录 - 填写表格并提交

时间:2018-03-08 07:18:57

标签: java api http-status-codes http-method

我是java的新手,我需要帮助。我正在尝试使用java登录网站,到目前为止一切似乎都很好。我得到了回复和一切,但它没有尝试登录,这有点奇怪..

运行代码时得到的响应是:

Sending 'POST' request to URL : http://mrpropop.com/login
Post parameters : login=admin&password=admin
Response Code : 200
+website html/css code

这是我的代码:

package practice;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.HttpURLConnection;
import java.net.URL;

public class login {

    private HttpURLConnection conn;

    public login() {
        // make sure cookies is turn on
        CookieHandler.setDefault(new CookieManager());
    }

    public String sendPost(String url, String params) throws Exception {

        URL obj = new URL(url);
        conn = (HttpURLConnection) obj.openConnection();

        // Acts like a browser
        conn.setUseCaches(false);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Host", "mrpropop.com");
        conn.setRequestProperty("User-Agent",
                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");
        conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
        conn.setRequestProperty("Connection", "keep-alive");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Content-Length", Integer.toString(params.length()));
        conn.setDoOutput(true);
        conn.setDoInput(true);

        // Send post request
        DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
        wr.writeBytes(params);
        wr.flush();
        wr.close();

        int responseCode = conn.getResponseCode();
        System.out.println("\nSending 'POST' request to URL : " + url);
        System.out.println("Post parameters : " + params);
        System.out.println("Response Code : " + responseCode);

        return getResponse();
    }

    private String getResponse() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line = br.readLine();
        StringBuilder sb = new StringBuilder();
        while (line != null) {
            sb.append(line);
            line = br.readLine();
        }
        return sb.toString();
    }

    public static void main(String[] argv) throws Exception {

        login login = new login();

        // 1. login first
        String loginUrl = "http://mrpropop.com/login";
        String loginParams = "login=admin&password=admin";
        login.sendPost(loginUrl, loginParams);

        // Post request
        String apiUrl = loginUrl;
        String apiParams = loginParams;
        System.out.println(login.sendPost(apiUrl, apiParams));

    }
}

这里有什么问题?提前谢谢!

2 个答案:

答案 0 :(得分:0)

我想你在获得代码200时想做点什么。

例如设置cookie。

答案 1 :(得分:0)

响应代码200表示您已成功登录。您可以通过从响应对象查询HTTP正文来显示内容。