色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙OS(ArkTS) 案例:【使用http網絡請求框架加載驗證碼】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-27 17:35 ? 次閱讀

需求:加載驗證碼;1.下載驗證碼圖像文件;2.獲取header里面驗證碼ID

踩坑--踩坑--踩坑

根據文檔使用 request.downloadFile 請求,官方示例:

// pages/xxx.ets
// 將網絡資源文件下載到應用文件目錄并讀取一段內容
import common from '@ohos.app.ability.common';
import fs from '@ohos.file.fs';
import request from '@ohos.request';

// 獲取應用文件路徑
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;

try {
  request.downloadFile(context, {
    url: 'https://xxxx/xxxx.txt',
    filePath: filesDir + '/xxxx.txt'
  }).then((downloadTask) = > {
    downloadTask.on('complete', () = > {
      console.info('download complete');
      let file = fs.openSync(filesDir + '/xxxx.txt', fs.OpenMode.READ_WRITE);
      let buf = new ArrayBuffer(1024);
      let readLen = fs.readSync(file.fd, buf);
      console.info(`The content of file: ${String.fromCharCode.apply(null, new Uint8Array(buf.slice(0, readLen)))}`);
      fs.closeSync(file);
    })
  }).catch((err) = > {
    console.error(`Invoke downloadTask failed, code is ${err.code}, message is ${err.message}`);
  });
} catch (err) {
  console.error(`Invoke downloadFile failed, code is ${err.code}, message is ${err.message}`);
}復制

里面存在一個解決不到的問題是,獲取不到header里面驗證碼ID,downloadTask 無法獲取....只能換常規方法獲取了。

換 httpRequest.request 來請求,示例代碼如下:

/**
   * 下載文件(驗證碼使用)
   */
  static httpFileDownload(url: string, params?: any): Promise< ResponseResultJson > {
    LogUtils.i("下載文件URL:" + url + "n請求參數:" + (params != undefined ? "n請求參數:" + JSON.stringify(params) : "無參數"));
    //
    let httpRequest = http.createHttp();
    httpRequest.on('headersReceive', (header) = > {
      //用于訂閱HTTP響應頭,此接口會比request請求先返回。可以根據業務需要訂閱此消息
    });
    //
    let responseResult = httpRequest.request(url, {
      method: http.RequestMethod.GET,
      readTimeout: RequestConstants.readTimeout,
      connectTimeout: RequestConstants.connectTimeout,
      header: {
        'Content-Type': ContentType.JSON
      },
      expectDataType: http.HttpDataType.ARRAY_BUFFER, // 可選,指定返回數據的類型
      extraData: params
    });
    let responseResultJson = new ResponseResultJson();
    return responseResult.then(async (responseResult: http.HttpResponse) = > {
      LogUtils.i("文件下載請求響應URL:" + url + "n響應結果:" + "n" + JSON.stringify(responseResult));
      if (responseResult.responseCode === ResponseConstants.RESPONSE_SUCCESS) {
        let header = responseResult.header
        LogUtils.i('解析響應 header n' + JSON.stringify(header));
        let headerJson = JSON.stringify(header)
        let headerObj = JSON.parse(headerJson)
        let sessionId = headerObj.sessionid as string
        let serverModel = headerObj.servermodel as string
        let encryptType = headerObj.encrypttype as string
        //保存 header
        await AppHelper.commitSessionId(sessionId);
        await AppHelper.commitServerModel(serverModel);
        await AppHelper.commitEncryptType(encryptType);
        //解析文件
        let result = responseResult.result as ArrayBuffer
        // let filePath = FileConstants.rootFile + "/verifyCode_" + TimeExUtils.getNowYMDHMS1() + '.jpg'
        let isHave = fs.accessSync(FileConstants.pathFile) //檢查文件目錄是否存在
        if (!isHave) fs.mkdirSync(FileConstants.pathFile) //創建目錄
        //
        let filePath = FileConstants.pathFile + "verifyCode_" + TimeExUtils.getNowYMDHMS1() + '.jpg'
        let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
        fs.writeSync(file.fd, result); //將數據寫入文件
        fs.closeSync(file); //關閉文件
        //
        LogUtils.i("保存文件成功:n" + filePath + "t" + await FileUtils.getPathSize(filePath));
        //結果
        responseResultJson.code = ResponseConstants.CODE_SUCCESS
        responseResultJson.isSuccess = true
        responseResultJson.status = responseResult.responseCode
        responseResultJson.serverModel = serverModel
        responseResultJson.filePath = filePath
      } else {
        responseResultJson.code = ResponseConstants.CODE_ERROR;
        responseResultJson.message = "業務異常:" + JSON.stringify(responseResult)
        responseResultJson.isSuccess = false
      }
      return responseResultJson;
    }).catch((error) = > {
      LogUtils.i("文件下載請求響應URL:" + url + "n請求異常:n" + JSON.stringify(error))
      responseResultJson.code = ResponseConstants.CODE_ERROR;
      responseResultJson.message = "請求異常:n" + JSON.stringify(error)
      responseResultJson.isSuccess = false
      return responseResultJson;
    });
  }復制

里面無用工具類可以不用在意...里面獲取header可以有2種方法

鴻蒙OS開發更多內容↓點擊HarmonyOSOpenHarmony技術
鴻蒙技術文檔開發知識更新庫gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在這。或+mau123789學習,是v喔

方法一:

搜狗高速瀏覽器截圖20240326151547.png

資料拿取+mau123789vhttpRequest.on('headersReceive', (header) = > {
      //用于訂閱HTTP響應頭,此接口會比request請求先返回??梢愿鶕I務需要訂閱此消息
    });

方法二:

let header = responseResult.header
        LogUtils.i('解析響應 header n' + JSON.stringify(header));
        let headerJson = JSON.stringify(header)
        let headerObj = JSON.parse(headerJson)
        let sessionId = headerObj.sessionid as string
        let serverModel = headerObj.servermodel as string
        let encryptType = headerObj.encrypttype as string

獲取的值是一樣的。

獲取驗證碼文件關鍵代碼:

1.參數里面的 expectDataType 需要設置為 http.HttpDataType.ARRAY_BUFFER;

  1. 結果轉換為ArrayBuffer,let result = responseResult.result as ArrayBuffer

運行日志:

cke_2126.png

運行效果:

cke_6226.png

完畢啦?。。?! 驗證碼獲取成功了?。。?!

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HarmonyOS
    +關注

    關注

    79

    文章

    1977

    瀏覽量

    30257
  • OpenHarmony
    +關注

    關注

    25

    文章

    3725

    瀏覽量

    16368
  • 鴻蒙OS
    +關注

    關注

    0

    文章

    189

    瀏覽量

    4424
收藏 人收藏

    評論

    相關推薦

    用基于gin框架的Go語言來實現手機號發送短信驗證碼登錄

    現在大多數app或wap都實現了通過手機號獲取驗證碼進行驗證登錄,下面來看下用go來實現手機號發送短信驗證碼登錄的過程,基于的框架是gin 。
    的頭像 發表于 07-20 09:36 ?4463次閱讀
    用基于gin<b class='flag-5'>框架</b>的Go語言來實現手機號發送短信<b class='flag-5'>驗證碼</b>登錄

    鴻蒙原生應用/元服務開發-Serverless賬戶驗證碼的問題

    在應用/元服務早期使用過程中,-Serverless賬戶驗證碼的格式是[AGC][應用/元服務名稱],如下圖。 但是,在最近,[應用/元服務]名稱直接變成了【default】,用戶收到這種驗證碼后,心里存有疑慮的,這是哪里配置或者設置的問題嗎?大家有遇到同樣的問題嗎?如何
    發表于 12-27 15:55

    無法驗證郵箱,總是提示驗證碼錯誤,驗證碼明明是正確的。

    `無法驗證郵箱,總是提示驗證碼錯誤,驗證碼明明是正確的。是不是系統的bug?`
    發表于 05-12 10:41

    平臺是如何高效的破解市面上各家驗證碼平臺的各種形式驗證碼的?

    驗證碼與打平臺的對抗講起。何為打平臺?打平臺的基本原理是利用人工智能技術實現對驗證碼設計原理的突破。其工作流程如下圖所示:以前黑灰產要
    發表于 11-01 15:21

    多樣變換的手寫驗證碼自動識別算法

    研究驗證碼自動識別技術可以進一步提升人識別驗證碼的可讀性,增強機器識別的難度,從而提高網絡安全性。針對目前提出的驗證碼識別方法基本都是采用光學字符識別(OCR)方法對機器寫的標準字符進
    發表于 12-20 14:14 ?0次下載

    SQLyog_12.4.1_帶驗證碼

    SQLyog_12.4.1_帶驗證碼.rar
    發表于 04-12 21:03 ?22次下載

    以一個真實網站的驗證碼為例,實現了基于一下KNN的驗證碼識別

    很多網站登錄都需要輸入驗證碼,如果要實現自動登錄就不可避免的要識別驗證碼。本文以一個真實網站的驗證碼為例,實現了基于一下KNN的驗證碼識別。
    的頭像 發表于 12-24 17:27 ?7783次閱讀

    驗證碼層出不窮?試試這個自動跳過驗證碼的工具

    目前網絡上越來越多使用驗證碼了,驗證碼的本意是阻止機器刷流量擠占服務器資源,這本來無可厚非;但是驗證碼已經變得越來越過分,別說機器人了,連人也經常沒法辨認!這就相當煩了,特別是被廣泛使
    的頭像 發表于 11-15 10:42 ?5992次閱讀

    驗證碼太麻煩,自動跳過驗證碼神器試一試

    目前網絡上越來越多使用驗證碼了,驗證碼的本意是阻止機器刷流量擠占服務器資源,這本來無可厚非;但是驗證碼已經變得越來越過分,別說機器人了,連人也經常沒法辨認! 這就相當煩了,特別是被廣泛
    的頭像 發表于 11-15 11:15 ?1w次閱讀

    OpenHarmony上使用的Http網絡框架教程

    簡介 鴻蒙上使用的Http網絡框架,里面包含純Java實現的HttpNet,類似okhttp使用,支持同步和異步兩種請求方式;還有
    發表于 04-12 11:13 ?4次下載

    一個短信驗證碼爆破重置

    以前倒是遇到過不少四位數驗證碼爆破的,但是這種可以結合短信遍歷,一個短信驗證碼只能驗證三次的,最后能成功利用的還是第一次遇到,關鍵還是這里不存在圖片驗證碼或者行為
    的頭像 發表于 09-07 09:14 ?5096次閱讀

    驗證碼到底在驗證啥?聊一聊驗證碼是怎么為難我們人類的

    在文章開頭,老狐先給大家玩一個驗證碼的游戲,猜出圖中驗證碼字母。
    的頭像 發表于 08-12 10:25 ?2118次閱讀
    <b class='flag-5'>驗證碼</b>到底在<b class='flag-5'>驗證</b>啥?聊一聊<b class='flag-5'>驗證碼</b>是怎么為難我們人類的

    Java 中驗證碼的使用

    今天我們講一下在 Java 中驗證碼的使用。 驗證碼生成 本效果是利用easy-captcha工具包實現,首先需要添加相關依賴到pom.xml中,代碼如下: com .github.whvcse
    的頭像 發表于 09-25 11:11 ?1052次閱讀
    Java 中<b class='flag-5'>驗證碼</b>的使用

    SpringBoot分布式驗證碼登錄方案

    傳統的項目大都是基于session交互的,前后端都在一個項目里面,比如傳統的SSH項目或者一些JSP系統,當前端頁面觸發到獲取驗證碼請求,可以將驗證碼里面的信息存在上下文中,所以登錄的時候只需要 用戶名、密碼、
    的頭像 發表于 10-12 17:34 ?730次閱讀
    SpringBoot分布式<b class='flag-5'>驗證碼</b>登錄方案

    鴻蒙OS開發實例:【HarmonyHttpClient】網絡框架

    鴻蒙上使用的Http網絡框架,里面包含純Java實現的HttpNet,類似okhttp使用,支持同步和異步兩種請求方式;還有
    的頭像 發表于 04-12 16:58 ?852次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b>開發實例:【HarmonyHttpClient】<b class='flag-5'>網絡</b><b class='flag-5'>框架</b>
    主站蜘蛛池模板: 精品久久久久中文字幕日本| 国产在线高清视频无码不卡| 亚洲日本激情| 色宅男午夜电影网站| 欧美残忍xxxx极端| 麻豆婷婷狠狠色18禁久久| 九色PORNY真实丨国产免费| 国产毛多水多高潮高清| 国产高清精品自在久久| 东北女人一级毛片| VIDEOSGGRATIS欧美另类| 99久在线国内在线播放免费观看| 91九色视频在线观看| 中文字幕一区久久久久| 中国女人内谢69XXXXXA片| 亚洲午夜精品A片久久不卡蜜桃| 亚洲va久久久久| 亚洲精品第一页中文字幕| 亚洲国产精品天堂在线播放| 亚洲高清在线视频| 亚洲乱码中文字幕久久| 亚洲一区二区三区91| 影音先锋av天堂| 1300部真实小Y女视频合集| 538视频这里只有精品| 99久久无码热高清精品| 白丝制服被啪到喷水很黄很暴力| 成人免费视频在线播放| 国产国拍亚洲精品永久软件| 国产午夜伦鲁鲁| 久久精品国产免费播放| 老司机亚洲精品影院在线观看| 美女被撕开胸罩狂揉大乳| 欧美另类jizzhd| 日本无吗高清| 羞羞在线观看| 樱花动漫成人隐藏入口| 99久久99久久精品| 国产AV果冻传奇麻豆| 国产一浮力影院| 啦啦啦 中文 日本 韩国 免费|