Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menyelesaikan Isu Penyerahan Borang Log Masuk Jsoup Kerana Parameter VIEWSTATE dan EVENTVALIDATION Hilang?
Pernyataan Masalah:
Walaupun menggunakan bukti kelayakan log masuk yang betul, kod Jsoup dipaparkan di bawah gagal melog masuk ke tapak web sasaran, sebaliknya memaparkan kod HTML halaman log masuk.
<code class="java">public void connect() { try { Connection.Response loginForm = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/login.php") .method(Connection.Method.GET) .execute(); org.jsoup.nodes.Document document = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/authentication.php") .data("cookieexists", "false") .data("username", "myUsername") .data("password", "myPassword") .cookies(loginForm.cookies()) .post(); System.out.println(document); } catch (IOException ex) { Logger.getLogger(WebCrawler.class.getName()).log(Level.SEVERE, null, ex); } }</code>
Penyelesaian:
Selain nama pengguna, kata laluan dan kuki, tapak web sasaran memerlukan dua nilai tambahan untuk log masuk: VIEWSTATE dan EVENTVALIDATION. Untuk mendapatkan nilai ini:
<code class="java">Document doc = loginForm.parse(); Element e = doc.select("input[id=__VIEWSTATE]").first(); String viewState = e.attr("value"); e = doc.select("input[id=__EVENTVALIDATION]").first(); String eventValidation = e.attr("value");</code>
Kemudian, tambahkan nilai ini pada permintaan siaran (perintah tidak penting):
<code class="java">org.jsoup.nodes.Document document = (org.jsoup.nodes.Document) Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/authentication.php").userAgent("Mozilla/5.0") .data("myLogin$myUsername", "MyUsername") .data("myLogin$myPassword, "MyPassword") .data("myLogin$myLoginButton.x", "22") .data("myLogin$myLoginButton.y", "8") .data("__VIEWSTATE", viewState) .data("__EVENTVALIDATION", eventValidation) .cookies(loginForm.cookies()) .post();</code>
Untuk mendayakan ciri "Ingat Saya", tambah :
<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>
Dengan pengubahsuaian ini, log masuk kini sepatutnya berjaya seperti yang diharapkan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Isu Penyerahan Borang Log Masuk Jsoup Kerana Parameter VIEWSTATE dan EVENTVALIDATION Hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!