国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Okhttp3實現爬取驗證碼及獲取Cookie的示例

2019-10-22 18:26:07
字體:
來源:轉載
供稿:網友

目前正在做畢業設計,一個關于校園服務的app,我會抽取已完成的相關代碼寫到文章里。一是為了造福這個曾經幫助過我的社區,二是寫文章的同時更能鞏固相關知識的記憶。

一、前言

在爬取教務系統的過程中,驗證碼的獲取是非常重要的:在生成驗證碼的圖片的同時,服務器會返回一個cookie,在接下來的所有請求都需要帶上這個cookie。

二、使用前準備

2.1 簡介

Okhttp是一個快速、高效的網絡請求庫。詳情可以查閱官方文檔

2.2 Android Studio配置gradle

compile'com.squareup.okhttp3:okhttp:3.5.0

2.3 在AndroidManifest中添加聯網的權限

<uses-permissionandroid:name="android.permission.INTERNET" />

三、獲取驗證碼與Cookie

  /**   * 初始化驗證碼   */  public void initCode(){    Request request = new Request.Builder().url(eduBean.getCodeUrl()).build();    Call call = okHttpClient.newCall(request);    call.enqueue(new Callback() {      @Override      public void onFailure(Call call, IOException e) {//        showToast("驗證碼加載失敗");      }      @Override      public void onResponse(Call call, Response response) throws IOException {        byte[] byte_image = response.body().bytes();        //通過handler更新UI        Message message = handler.obtainMessage();        message.obj = byte_image;        message.what = 1;        handler.sendMessage(message);        //獲取session的操作,session放在cookie頭,且取出后含有“;”,取出后為下面的 s (也就是jsesseionid)        Headers headers = response.headers();//        Log.d("info_headers", "header " + headers);        List<String> cookies = headers.values("Set-Cookie");        String session = cookies.get(0);//        Log.d("info_cookies", "onResponse-size: " + cookies);        String sessionID = session.substring(0, session.indexOf(";"));        eduBean.setSessionID(sessionID);//        Log.i("info_s", "session is :" + sessionID);      }    });  }

成功獲取驗證碼后,通過handler通知UI更新驗證碼的圖片

public Handler handler = new Handler(){    public void handleMessage(Message msg){      switch (msg.what){        case 1:            //加載網絡成功進行UI的更新,處理得到的圖片資源            //通過message,拿到字節數組            byte[] Picture = (byte[]) msg.obj;            //使用BitmapFactory工廠,把字節數組轉化為bitmap            Bitmap bitmap = BitmapFactory.decodeByteArray(Picture, 0, Picture.length);            //通過imageview,設置圖片            iv_code.setImageBitmap(bitmap);//ImageView 顯示驗證碼的組件            break;      }    }

總結

通過這簡單的代碼就已經完成了驗證碼和cookie的爬取,是吧,okhttp真是一個非常強大的網絡請求庫,下一章,我將會介紹如何爬取教務系統的成績。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 申扎县| 牙克石市| 瑞安市| 马龙县| 安国市| 德清县| 五台县| 柞水县| 台东县| 敖汉旗| 辽阳市| 阿拉善右旗| 武宁县| 寿阳县| 台湾省| 略阳县| 茌平县| 桐柏县| 汽车| 扶风县| 信阳市| 和田市| 临海市| 宁明县| 衡水市| 乾安县| 宁乡县| 咸宁市| 喜德县| 石棉县| 邵阳县| 泰安市| 吴桥县| 高邑县| 渭源县| 全椒县| 茌平县| 北川| 阳高县| 云林县| 云阳县|