我正在尝试使用 java 中的 HttpsURLConnection 登录网站 lectio.dk。 最初我以为这就像使用带有相应用户名和密码的 cookie 向网站发布请求一样简单,但它并不让我那么容易进入。 该网站使用 ASP.NET session 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();
...
这需要成为您对 protected 内容执行的任何请求的一部分。想一想,如果您使用 HTTP 客户端库,您还可以通过启用 cookie 支持来建立一次验证流程。例如。 OkHttp是一个不错的库来做到这一点。另请参阅Android OkHttp with Basic Authentication .
关于java - 在使用原始表单数据的网站上填写登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58260946/