Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyelesaikan Ralat Penyerahan Borang Log Masuk dalam Jsoup Kerana Parameter yang Hilang?

Bagaimana untuk Menyelesaikan Ralat Penyerahan Borang Log Masuk dalam Jsoup Kerana Parameter yang Hilang?

Linda Hamilton
Linda Hamiltonasal
2024-10-20 13:18:02960semak imbas

How to Resolve Login Form Submission Errors in Jsoup Due to Missing Parameters?

Masalah dengan Penyerahan Borang Log Masuk Menggunakan Jsoup

Isu dengan kod yang disediakan terletak pada ketidakupayaannya untuk berjaya log masuk ke tapak web walaupun menggunakan yang betul kelayakan log masuk. Kod pada masa ini mendapatkan semula halaman log masuk tetapi gagal melaksanakan log masuk yang berjaya.

Masalah asas ialah proses penyerahan memerlukan parameter tambahan di luar nama pengguna, kata laluan dan kuki. Khususnya, tapak web memerlukan nilai "VIEWSTATE" dan "EVENTVALIDATION".

Penyelesaian

Untuk menyelesaikan isu ini, nilai tambahan ini mesti diambil daripada respons yang pertama DAPATKAN permintaan dan disertakan dalam permintaan POST. Kod berikut menunjukkan cara untuk mendapatkan dan menggabungkan nilai ini:

<code class="java">Document loginForm = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/login.php")
                .method(Connection.Method.GET)
                .execute()
                .parse();

String viewState = loginForm.select("input[id=__VIEWSTATE]").first().attr("value");
String eventValidation = loginForm.select("input[id=__EVENTVALIDATION]").first().attr("value");

org.jsoup.nodes.Document 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>

Selain itu, disyorkan untuk menetapkan medan userAgent dalam kedua-dua permintaan GET dan POST untuk memastikan anda menerima respons pelayan yang sama seperti yang anda lakukan dengan penyemak imbas .

Untuk mendayakan ciri "Ingat saya" semasa log masuk, masukkan baris berikut ke dalam permintaan POST:

<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Penyerahan Borang Log Masuk dalam Jsoup Kerana Parameter yang Hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn