2013-11-24 25 views
7

Tôi đang cố đăng nhập vào một trang web bằng phương pháp đăng bài JSoup. Tôi thấy một số ví dụ nhưng không làm việc với tôi. Tôi đang cố gắng để đăng nhập vào: http://ug.technion.ac.il/Tadpis.html Cho rằng tôi có đoạn mã sau:Đăng nhập trang web bằng phương thức đăng bài JSoup

String url = "http://ug.technion.ac.il/Tadpis.html"; 
doc = Jsoup.connect(url).data("userid", "my_user_id") 
       .data("password", "my_password").data("function","signon").data("submit", "Signon").post(); 

Rõ ràng tôi đang thiếu một số dữ liệu (tôi không biết mà). Một thứ khác không rõ ràng với tôi là url. Khi kiểm tra html của url trên, tôi có thể thấy dòng này:

<form action="http://techmvs.technion.ac.il:80/cics/wmn/wmngrad?aapmlkwi&ORD=1&s=1" method="POST" name="SignonForm" 

là một url khác với url được nêu ở trên. Tôi sử dụng cái nào trong số này để làm tham số url cho phương thức "kết nối"?

Cảm ơn!

Trả lời

5

Url bạn thấy trong thanh địa chỉ không phải là địa chỉ mà bạn muốn đưa ra yêu cầu. Bạn nên gửi yêu cầu tới url thứ hai mà bạn thấy trong biểu mẫu.

//With this you login and a session is created 
    Connection.Response res = Jsoup.connect("http://techmvs.technion.ac.il:80/cics/wmn/wmngrad?aapmlkwi&ORD=1&s=1") 
     .data("username", "myUsername", "password", "myPassword") 
     .method(Method.POST) 
     .execute(); 

//This will get you cookies 
Map<String, String> loginCookies = res.cookies(); 

//Here you parse the page that you want. Put the url that you see when you have logged in 
Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess") 
     .cookies(loginCookies) 
     .get(); 

P.S. Tôi tin rằng http://techmvs.technion.ac.il:80/cics/wmn/wmngrad là đủ. Bạn không cần thêm các tham số GET, nhưng hãy kiểm tra nó cho chính mình.

Các vấn đề liên quan