首先让我指出,我对编程很新,所以如果我遗漏了一些明显的东西,我很抱歉.
我正在尝试编写一个程序,让您登录到this website
但我无法弄清楚如何将自己的字符串输入到电子邮件和密码字段.我也不太清楚如何检查登录是否通过……
到目前为止这是我的代码:
public static void main(String[] args) throws Exception {
String loginURL = "https://www.skanetrafiken.se/inloggning?ReturnUrl=%2fmitt-konto%2fse-saldo-och-ladda-kort%2f"; // URL of the login page
String accountURL = "https://www.skanetrafiken.se/mitt-konto/se-saldo-och-ladda-kort/"; // The URL you get to after successfully logging in
Document res = Jsoup
.connect(loginURL)
.data("loginInputModel.Email", "myEmail@email.com") //Not sure if these are the correct values to be changed or if this even changes them
.data("loginInputModel.Password", "myPassword")
.post();
System.out.println(res); // What should be printed to check to see if it worked?
}
它类似于我见过的很多例子,但它似乎不起作用……
最佳答案 对于支持HTTP基本访问身份验证的站点,您可以通过在请求中发送Authorization标头来访问任何页面.您的网站支持它,代码可以跟随访问帐户页面:
import java.io.IOException;
import java.util.Map;
import org.jsoup.Connection.Method;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class Test {
public static void main(String[] args) throws IOException {
// We need run initial request to obtain RequestVerificationToken
String initialURL = "https://www.skanetrafiken.se/inloggning";
Document doc = Jsoup
.connect(initialURL)
.get();
String requestVerificationToken = doc.select("input[name=__RequestVerificationToken]").get(0).val();
// Do login (all headers and more important all form fields should be populated)
String loginURL = "https://www.skanetrafiken.se/inloggning/LoginPost/";
Response res = Jsoup.connect(loginURL)
.header("Accept", "*/*")
.header("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
.header("Origin", "https://www.skanetrafiken.se")
.header("X-Requested-With", "XMLHttpRequest")
.header("Referer", "https://www.skanetrafiken.se/inloggning")
.data("__RequestVerificationToken", requestVerificationToken)
.data("loginInputModel.ReturnUrl", "")
.data("loginInputModel.Role", "Private")
.data("loginInputModel.Email", "<email>")
.data("loginInputModel.Password", "<password>")
.data("X-Requested-With", "XMLHttpRequest")
.userAgent("Mozilla/5.0")
.ignoreContentType(true)
.method(Method.POST)
.execute();
// Keep logged in (store cookies for next calls)
Map<String, String> cookies = res.cookies();
// Request a desired page
String accountURL = "https://www.skanetrafiken.se/mitt-konto/se-saldo-och-ladda-kort/";
Document doc2 = Jsoup
.connect(accountURL)
.cookies(cookies)
.get();
// Work with the doc
System.out.println(doc2);
}
}