JAVA代碼模擬獲取cookie以及攜帶cookie

JAVA代碼模擬獲取cookie以及攜帶cookie

去年做android的時候,網(wǎng)絡(luò)連接沒有用類似OKHttp之類的框架,而是完全用jdk自帶的api實現(xiàn),今天不想看書。。就把筆記整理一下吧。。

這里有個小demo,是先實現(xiàn)登陸,登陸的過程是通過post方式請求,登陸后通過攜帶的cookie判斷是否已經(jīng)成功登陸。

1.獲取cookie

public void connect(String u) throws IOException{
        HttpURLConnection conn = null;
        OutputStream os = null;
        InputStream is = null;
        try {
            URL url = new URL(u);
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);
            os = conn.getOutputStream();
            String param = "account=senninha&password=senninha";
            String eparam = param;
            //這里是把post參數(shù)攜帶上去。
            os.write(eparam.getBytes("utf-8"));
            is = conn.getInputStream();
            byte[] b = new byte[1024];
            int len = is.read(b);
            while(len != -1){
                System.out.println(new String(b,0,len,"utf-8"));
                len = is.read(b);
            }
            //這里是讀取第一次登陸時服務(wù)器返回的cookie,然后用一個全局變量cookie接收。因為是服務(wù)器往客戶端發(fā)送cookie,所以名字是Set-Cookie
            cookie = conn.getHeaderField("Set-Cookie");
            System.out.println("read over" + cookie);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   finally{
            if(os != null){
                os.close();
            }
            
            if(is != null){
                is.close();
            }
            if(conn != null){
                conn.disconnect();
            }
            
            System.out.println("all close");
        }
    }

2.攜帶cookie

public void isLogin(String u) throws IOException{
        HttpURLConnection conn = null;
        InputStream is = null;
        try {
            URL url = new URL(u);
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            //把上一步獲取的cookie攜帶上去
            conn.setRequestProperty("cookie", cookie);
            conn.setDoInput(true);
            is = conn.getInputStream();
            byte[] b = new byte[1024];
            int len = is.read(b);
            while(len != -1){
                System.out.println(new String(b,0,len,"utf-8"));
                len = is.read(b);
            }
            System.out.println("read over");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   finally{
            if(is != null){
                is.close();
            }
            if(conn != null){
                conn.disconnect();
            }
            
        }
            System.out.println("all close");
        }

ok,以后每次訪問,只要攜帶上這個cookie,就可以暢通無阻了。當然,是指用cookie維持登陸的網(wǎng)站。

ps:java后端的維持登陸狀態(tài)的cookie叫JSESSIONID,php的叫phpSessionId好像。。
ps:對于安卓客戶端來說,獲取到的cookie可以存到數(shù)據(jù)庫里,這樣重啟app后一樣可以再次保持登陸狀態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,842評論 11 349
  • 1. cookie 1.1 什么是cookie cookie 是存儲于訪問者的計算機中的變量。每當同一臺計算機通過...
    cbw100閱讀 4,197評論 0 13
  • (2008年陽春三月,曾經(jīng)偷偷去考了公務(wù)員。五百人的大軍中,在下名列百位,離目標遠矣。然已努力一搏,此生無憾。) ...
    竹影燈閱讀 689評論 0 1
  • 今天第一次使用簡書,許多功能還不會用。 初中的時候?qū)戇^一段時間的日記,后來就再沒有了,即使偶爾寫一點東西...
    午后紅茶_雙子座閱讀 104評論 0 1
  • 見慣了你 卻從來沒有為你動心 只是一次偶然 你邀我去漫步 在鄉(xiāng)間小路上 突然你從背后摟住我的脖子 十六歲的小姑娘 ...
    田萍閱讀 230評論 2 6

友情鏈接更多精彩內(nèi)容