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

首頁 > 系統 > Android > 正文

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

2019-12-12 01:55:20
字體:
來源:轉載
供稿:網友

目前正在做畢業設計,一個關于校園服務的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真是一個非常強大的網絡請求庫,下一章,我將會介紹如何爬取教務系統的成績。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永清县| 扎赉特旗| 汉中市| 大厂| 阜平县| 金川县| 延寿县| 台东市| 遂平县| 浮山县| 临高县| 余庆县| 札达县| 龙里县| 绍兴市| 克山县| 壤塘县| 保亭| 新兴县| 永吉县| 水城县| 旬邑县| 图木舒克市| 德清县| 九寨沟县| 中超| 余庆县| 长垣县| 安顺市| 易门县| 余姚市| 朝阳县| 乌拉特中旗| 武鸣县| 交口县| 汝阳县| 日喀则市| 塔河县| 桐乡市| 太仆寺旗| 修水县|