java模擬cookie登陸操作
在使用java訪問URL時(shí),如果該URL需要身份驗(yàn)證,那么就不能夠直接訪問,因?yàn)闆]有登陸。那么,如何解決這個(gè)問題呢?
方法是使用java模擬登陸,登陸后記錄下cookie信息,在下次發(fā)起請求時(shí)時(shí)將cookie發(fā)送過去用以表明身份,這樣就能夠訪問帶有權(quán)限的URL了。
下面首先介紹使用java模擬登陸。
// 連接地址(通過閱讀html源代碼獲得,即為登陸表單提交的URL) String surl = "http://login.goodjobs.cn/index.php/action/UserLogin"; /** * 首先要和URL下的URLConnection對話。 URLConnection可以很容易的從URL得到。比如: // Using * java.net.URL and //java.net.URLConnection */ URL url = new URL(surl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); /** * 然后把連接設(shè)為輸出模式。URLConnection通常作為輸入來使用,比如下載一個(gè)Web頁。 * 通過把URLConnection設(shè)為輸出,你可以把數(shù)據(jù)向你個(gè)Web頁傳送。下面是如何做: */ connection.setDoOutput(true); /** * 最后,為了得到OutputStream,簡單起見,把它約束在Writer并且放入POST信息中,例如: ... */ OutputStreamWriter out = new OutputStreamWriter(connection .getOutputStream(), "GBK"); //其中的memberName和password也是閱讀html代碼得知的,即為表單中對應(yīng)的參數(shù)名稱 out.write("memberName=myMemberName&password=myPassword"); // post的關(guān)鍵所在! // remember to clean up out.flush(); out.close(); // 取得cookie,相當(dāng)于記錄了身份,供下次訪問時(shí)使用 String cookieVal = connection.getHeaderField("Set-Cookie");
登陸成功后,即可訪問其他URL了。
String s = "http://user.goodjobs.cn/dispatcher.php/module/Resume/action/Preview"; //重新打開一個(gè)連接 url = new URL(s); HttpURLConnection resumeConnection = (HttpURLConnection) url .openConnection(); if (cookieVal != null) { //發(fā)送cookie信息上去,以表明自己的身份,否則會被認(rèn)為沒有權(quán)限 resumeConnection.setRequestProperty("Cookie", cookieVal); } resumeConnection.connect(); InputStream urlStream = resumeConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(urlStream)); String ss = null; String total = ""; while ((ss = bufferedReader.readLine()) != null) { total += ss; } IOUtils.write(total, new FileOutputStream("d:/index.html")); bufferedReader.close();
通過上述方式,就能訪問帶有權(quán)限控制的URL了。思路即為:模擬登陸,取得cookie以記錄身份,下次請求時(shí)發(fā)送cookie以表明身份。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- cookie、session和java過濾器結(jié)合實(shí)現(xiàn)登陸程序
- JAVA實(shí)現(xiàn)簡單系統(tǒng)登陸注冊模塊
- JavaWeb登陸功能實(shí)現(xiàn)代碼
- JAVA簡單鏈接Oracle數(shù)據(jù)庫 注冊和登陸功能的實(shí)現(xiàn)代碼
- java shiro實(shí)現(xiàn)退出登陸清空緩存
- JavaWeb基于Session實(shí)現(xiàn)的用戶登陸注銷方法示例
- Java Web實(shí)現(xiàn)session過期后自動跳轉(zhuǎn)到登陸頁功能【基于過濾器】
- java客戶端登陸服務(wù)器用戶名驗(yàn)證
- Java Web開發(fā)過程中登陸模塊的驗(yàn)證碼的實(shí)現(xiàn)方式總結(jié)
- Java Swing中JDialog實(shí)現(xiàn)用戶登陸UI示例
- Java 模擬cookie登陸簡單操作示例
相關(guān)文章
提高開發(fā)效率Live?Templates使用技巧詳解
這篇文章主要為大家介紹了提高開發(fā)效率Live?Templates使用技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01SpringBoot整合WebService服務(wù)的實(shí)現(xiàn)代碼
WebService是一個(gè)SOA(面向服務(wù)的編程)的架構(gòu),它是不依賴于語言,不依賴于平臺,可以實(shí)現(xiàn)不同的語言間的相互調(diào)用,通過Internet進(jìn)行基于Http協(xié)議的網(wǎng)絡(luò)應(yīng)用間的交互,這篇文章主要介紹了SpringBoot整合WebService服務(wù)的實(shí)例代碼,需要的朋友可以參考下2022-02-02Java實(shí)現(xiàn)AWT四大事件的詳細(xì)過程
AWT的事件處理是一種委派式事件處理方式:普通組件(事件源)將整個(gè)事件處理委托給特定的對象(事件監(jiān)聽器);當(dāng)該事件源發(fā)生指定的事件時(shí),就通知所委托的事件監(jiān)聽器,由事件監(jiān)聽器來處理這個(gè)事件2022-04-04Java讀取網(wǎng)絡(luò)文件的實(shí)例代碼
這篇文章主要介紹了Java讀取網(wǎng)絡(luò)文件的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07SpringCloud?Tencent?全套解決方案源碼分析
Spring Cloud Tencent實(shí)現(xiàn)Spring Cloud標(biāo)準(zhǔn)微服務(wù)SPI,開發(fā)者可以基于Spring Cloud Tencent開發(fā)Spring Cloud微服務(wù)架構(gòu)應(yīng)用,Spring Cloud Tencent 的核心依托騰訊開源的一站式服務(wù)發(fā)現(xiàn)與治理平臺 Polarismesh,實(shí)現(xiàn)各種分布式微服務(wù)場景,感興趣的朋友一起看看吧2022-07-07SpringBoot實(shí)現(xiàn)登錄攔截器超詳細(xì)教程分享
對于管理系統(tǒng)或其他需要用戶登錄的系統(tǒng),登錄驗(yàn)證都是必不可少的環(huán)節(jié),尤其在?SpringBoot?開發(fā)的項(xiàng)目中。本文為大家準(zhǔn)備了超詳細(xì)的SpringBoot實(shí)現(xiàn)登錄攔截器方法,快收藏一波吧2023-02-02IDEA的Mybatis Log Plugin插件配置和使用詳解
這篇文章主要介紹了IDEA的Mybatis Log Plugin插件配置和使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09