java 登录编程_Java编程通过session访问需要登录的页面
使用Java訪問一般網頁,進行數據抓取等比較簡單,直接用URL和URLConnection連接所需要的網站地址即可,然后對返回的html源碼進行處理分析,獲取感興趣的內容。
不過如果是需要登錄后才能訪問的網頁就不能直接傳入網站url進行連接了,一般網頁會自動跳轉到登錄頁面,要求先登錄。
另外,即使先在登錄頁面進行了登錄,然后再轉到要登錄才能訪問的網頁時,如果沒在第二次連接中加入之前登錄成功后的session,那么訪問仍然會失敗。URLConnection每次打開一個連接,如果不進行設置,則默認會以新的session去訪問,那么相當于又需要重新登錄,因此需要加入登錄成功的session才能訪問到需要登錄的頁面。
以下通過一個小例子來說明該如何操作:
1.首先找到登錄界面
2.查看表單提交給哪個action
3.來到單一的表單提交頁面
4.修改表單提交方式為get
5.隨便輸入用戶名和密碼后瀏覽器的地址欄就有這么一串地址,只要把user和password改成正確的,那么直接在瀏覽器輸入這串地址就直接登錄,類似的,直接用URLConnetion打開這串數據的連接即實現了登錄,獲取服務器返回過來的session,下次再連接該網站的別的需要登錄的頁面時帶上這個session即可成功訪問了。
代碼如下(具體網站地址已隱去):
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class Test
{
public static void main(String[] args) throws Exception//以下僅舉個小例子,不處理異常
{
String id="xxxxx";
String passwd="xxxxx";
String loginUrl="http://xxxxx/login.aspx?__VIEWSTATE=dDw2Nzg5Mjk2NTY7O2w8b2s7Pj5OOk%2B5QUCLHuIzBtlhui5aZbY11Q%3D%3D&txt_user="+id+"&txt_password="+passwd+"&ok.x=35&ok.y=12";
URL url = new URL(loginUrl);
URLConnection conn = url.openConnection();
String sessionValue = conn.getHeaderField("Set-Cookie");//獲取session值
String[] sessionId = sessionValue.split(";");
URL newUrl = new URL("http://xxxxx/student_info1.aspx");
URLConnection newConn = newUrl.openConnection();
newConn.setRequestProperty("Cookie", sessionId[0]);
newConn.connect();
BufferedInputStream bis = new BufferedInputStream(newConn.getInputStream());
InputStreamReader inputStreamReader = new InputStreamReader(bis,"utf-8");
BufferedReader br = new BufferedReader(inputStreamReader);
String str = null;
while ((str = br.readLine()) != null)
{
System.out.println(str);//輸出登錄后才能訪問的網頁的html源碼,可以根據需要獲取相關信息
}
}
}
總結
以上是生活随笔為你收集整理的java 登录编程_Java编程通过session访问需要登录的页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高净值客户指什么?如何理解
- 下一篇: Java多进程测试用例_Pytest x