Android HttpsURLConnection身份验证

时间:2017-03-22 01:09:51

标签: android

我是java的新手,并且在登录后尝试获取网页的来源(网站为https://stem7.maxnet.co.nz/ispcentre/home.php

我正在使用的代码是我试图扩展教程。 (可能太远了) 下面的代码返回登录页面的来源并停在那里。

    private String getSource(URL url) throws IOException {
        HttpsURLConnection spoof = (HttpsURLConnection)url.openConnection();

        StringBuffer sb = new StringBuffer();

        String basicAuth = "Basic " + Base64.encodeToString("username:password".getBytes(), Base64.DEFAULT);

        spoof.setRequestProperty ("Authorization", basicAuth);

        spoof.setRequestMethod("POST");
        spoof.setUseCaches(false);
        spoof.setDoInput(true);
        spoof.setDoOutput(true);
        spoof.setRequestProperty("User-Agent",
                "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)");
        BufferedReader in = new BufferedReader(new InputStreamReader(
                spoof.getInputStream()));

        String strLine = "";
        while ((strLine = in.readLine()) != null) {
            sb.append(strLine);
        }

        return sb.toString();
    }

非常感谢任何帮助。即使是正确方向的一点。干杯

1 个答案:

答案 0 :(得分:0)

该页面使用表单身份验证,这意味着当您登录时,后端希望请求包含2个参数,一个用于用户名,一个用于密码,但您的代码使用的是每次都失败的基本身份验证,这就是为什么您继续获取登录页面的来源(服务器无法对您进行身份验证,因此它将客户端重定向回登录页面,因此登录页面的HTML源代码将返回给您。所以您可以尝试这样做

connection.setRequestProperty("username", "username");
connection.setRequestProperty("password", "password");