我正在尝试使用Java中的HttpsURLConnection登录网站lectio.dk。最初,我认为这就像将带有相应用户名和密码的Cookie的请求发布到网站一样简单,但是这样做并不容易。该网站使用ASP.NET会话ID,当从浏览器中检索时,我可以使用该ID来访问该网站。
[当我在Google Chrome浏览器中查看开发人员模式时,似乎好像是直接从文本字段(而不是通过Cookie)获取登录详细信息,据我所知,无法从Java中进行编辑。我认为这是因为包含来自两个文本字段的数据的表单数据是我看到写入的登录详细信息的唯一位置。
[如果有人可以告诉我,是否可以通过编程方式登录到此网站并以登录用户的身份访问该网站,我很乐意。
您可以使用基本身份验证加载页面。像这样:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
String userPassword = username + ":" + password;
String userPasswordEncoded = Base64.getEncoder().encodeToString(userPassword.getBytes(StandardCharsets.UTF_8));
connection.setRequestProperty("Authorization", "Basic " + userPasswordEncoded);
connection.connect();
...
这必须是您对安全内容提出的任何请求的一部分。考虑一下,如果您使用的是HTTP客户端库,则还可以通过启用Cookie支持来建立一次身份验证流。例如。 OkHttp是一个不错的库。另请参阅Android OkHttp with Basic Authentication。