欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutterdio,flutterdio 如何把map轉(zhuǎn)成對象

flutter 網(wǎng)絡(luò)請求dio的簡單使用以及請求頭參數(shù)的自定義

dio的使用方式有很多,我就只選出我認(rèn)為最好用的api方式做下記錄,把get成post就是post請求了,網(wǎng)絡(luò)請求都用的百度的api,實際上的response沒有任何意義,所以只要打印出response有值即可。

成都創(chuàng)新互聯(lián)公司專注于新田企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā)。新田網(wǎng)站建設(shè)公司,為新田等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

1.最簡單的請求例子,網(wǎng)絡(luò)請求是異步的所以用async await

2.帶有參數(shù)的get請求

3.自定義請求頭,可定義的請求頭dart已經(jīng)為我們提供了專門的類存了對應(yīng)的字符,引入以下庫,就能使用 HttpHeaders

一般我們請求接收到的數(shù)據(jù)是json格式,如'accept: application/json',我們就可以這樣自定義請求頭

4.使用Baseoptions

其他詳細(xì)參數(shù)設(shè)置參考如下:

Flutter 之 dio 請求HTTP

簡單說明flutter使用Dio包發(fā)送請求

1.添加依賴

2.導(dǎo)入dio

3.設(shè)置options

4.發(fā)送請求

解決辦法:

2019-08-05補充:

設(shè)置queryParameters是get請求,如果post失敗可以考慮是否是httpheader的內(nèi)容不符,本人就碰到 Content-Type的問題,默認(rèn) Content-Type為ContentType.json需要根據(jù)自己修改:

Flutter Dio源碼分析(四)--封裝

Flutter Dio源碼分析(一)--Dio介紹

Flutter Dio源碼分析(二)--HttpClient、Http、Dio對比

Flutter Dio源碼分析(三)--深度剖析

Flutter Dio源碼分析(四)--封裝

Flutter Dio源碼分析(一)--Dio介紹視頻教程

Flutter Dio源碼分析(二)--HttpClient、Http、Dio對比視頻教程

Flutter Dio源碼分析(三)--深度剖析視頻教程

Flutter Dio源碼分析(四)--封裝視頻教程

github倉庫地址

本文會手把手教你該怎么去封裝一個類庫,平時在我們的工作中都是拿著別人的造好的輪子在使用,這篇文章將帶你怎么去自己造輪子,以后再碰到別的類庫需要對其進(jìn)行封裝的時候提供一個的思路和方法。

在前面的文章中,我們對 Dio 的基本使用、請求庫對比、源碼分析,我們知道 Dio 的使用非常的簡單,那為什么還需要進(jìn)行封裝呢?有兩點如下:

當(dāng)組件庫方法發(fā)生重要改變需要遷移的時候如果有多處地方用到,那么需要對使用到的每個文件都進(jìn)行修改,非常的繁瑣而且很容易出問題。

當(dāng)不需要 Dio 庫的時候,我們可以隨時方便切換到別的網(wǎng)絡(luò)請求庫,當(dāng)然 Dio 目前內(nèi)置支持使用第三方庫的適配器。

因為一個應(yīng)用程序基本都是統(tǒng)一的配置方式,所以我們可以針對 攔截器 、 轉(zhuǎn)換器 、 緩存 、 統(tǒng)一處理錯誤 、 代理配置 、 證書校驗 等多個配置進(jìn)行統(tǒng)一管理。

因為我們的應(yīng)用程序在每個頁面中都會用到網(wǎng)絡(luò)請求,那么如果我們每次請求的時候都去實例化一個 Dio ,無非是增加了系統(tǒng)不必要的開銷,而使用單例模式對象一旦創(chuàng)建每次訪問都是同一個對象,不需要再次實例化該類的對象。

這是通過靜態(tài)變量的私有構(gòu)造器來創(chuàng)建的單例模式

我們對 超時時間 、 響應(yīng)時間 、 BaseUrl 進(jìn)行統(tǒng)一設(shè)置

因為不管是 get() 還是 post() 請求, Dio 內(nèi)部最終都會調(diào)用 request 方法,只是傳入的 method 不一樣,所以我們這里定義一個枚舉類型在一個方法中進(jìn)行處理

我們已經(jīng)把 Restful API 風(fēng)格簡化成了一個方法,通過 DioMethod 來標(biāo)明不同的請求方式。在我們平時開發(fā)的過程中,需要在請求前、響應(yīng)前、錯誤時對某一些接口做特殊的處理,那我們就需要用到攔截器。 Dio 為我們提供了自定義攔截器功能,很容易輕松的實現(xiàn)對請求、響應(yīng)、錯誤時進(jìn)行攔截

我們發(fā)現(xiàn)雖然 Dio 框架已經(jīng)封裝了一個 DioError 類庫,但如果需要對返回的錯誤進(jìn)行統(tǒng)一彈窗處理或者路由跳轉(zhuǎn)等就只能自定義了

在我們發(fā)送請求的時候會碰到幾種情況,比如需要對非open開頭的接口自動加上一些特定的參數(shù),獲取需要在請求頭增加統(tǒng)一的 token

在我們請求接口前可以對響應(yīng)數(shù)據(jù)進(jìn)行一些基礎(chǔ)的處理,比如對響應(yīng)的結(jié)果進(jìn)行自定義封裝,還可以針對單獨的 url 做特殊處理等。

我們看了轉(zhuǎn)換器的介紹,發(fā)現(xiàn)和攔截器的功能差不多,那為什么還要存在轉(zhuǎn)換器,有兩點:

執(zhí)行流程: 請求攔截器 請求轉(zhuǎn)換器 發(fā)起請求 響應(yīng)轉(zhuǎn)換器 響應(yīng)攔截器 最終結(jié)果 。

只會被用于 'PUT'、 'POST'、 'PATCH'方法,因為只有這些方法才可以攜帶請求體(request body)

會被用于所有請求方法的返回數(shù)據(jù)。

在開發(fā)過程中,客戶端和服務(wù)器打交道的時候,往往會用一個 token 來做校驗,因為每個公司處理刷新token的邏輯都不一樣,我這里舉一個簡單的例子

為什么我們需要有取消請求的功能,如果當(dāng)我們的頁面在發(fā)送請求時,用戶主動退出當(dāng)前界面或者app應(yīng)用程序退出的時候數(shù)據(jù)還沒有響應(yīng),那我們就需要取消該網(wǎng)絡(luò)請求,防止不必要的錯誤。

由 服務(wù)器生成 的 一小段文本信息 ,發(fā)送給瀏覽器,瀏覽器把 cookie 以kv形式保存到本地 某個目錄下的文本文件內(nèi),下一次請求同一網(wǎng)站時會把該 cookie 發(fā)送給服務(wù)器。

cookie 的使用需要用到兩個第三方組件 dio_cookie_manager 和 cookie_jar

因為在我們平時的開發(fā)過程中,會碰到一種情況,在進(jìn)行網(wǎng)絡(luò)請求時,我們希望能正常訪問到上次的數(shù)據(jù),對于用戶的體驗比較好,而不是展示一個空白的頁面,該緩存主要是 《Flutter實戰(zhàn)》網(wǎng)絡(luò)接口緩存 提供參考。

我們在程序退出后內(nèi)存緩存將會消失,所以我們用 shared_preferences 進(jìn)行磁盤緩存數(shù)據(jù)。

在我們用flutter進(jìn)行抓包的時候需要配置 Dio 代理。由 DefaultHttpClientAdapter 提供了一個 onHttpClientCreate 回調(diào)來設(shè)置底層 HttpClient 的代理。

用于驗證正在訪問的網(wǎng)站是否真實。提供安全性,因為證書和域名綁定,并且由根證書機構(gòu)簽名確認(rèn)。

日志打印主要是幫助我們開發(fā)時進(jìn)行輔助排錯

flutter Dio封裝get/post請求

最近剛學(xué)flutter,參考大佬們的文章,使用dio簡單封裝了一下網(wǎng)絡(luò)請求工具類。

needToken請忽略,以前是打算獲取本地存儲的token,需要傳token的請求帶上,后來發(fā)現(xiàn)這么做有問題,后面會提到。

根據(jù)后臺返回數(shù)據(jù),簡單封裝。

post請求和get請求區(qū)別不大,我的項目get請求參數(shù)直接拼在url后面,所以get使用queryParameters,后臺要求post放body,所以post使用data。

我們項目很多請求需要帶上登錄返回的token,所以,我用shared_preferences插件把它存在本地,shared_preferences在iOS端使用的是NSUserDefaults。

以前的想法,如果needToken為true,則去獲取本地的token,設(shè)置dio.header,如下所示

適當(dāng)?shù)臅r機調(diào)用complete(),即網(wǎng)絡(luò)請求完成,獲取到數(shù)據(jù)的時候,然后返回complete.future。

我也是剛學(xué)的菜雞,如有錯誤,嘿嘿嘿。。。

Flutter的Dio網(wǎng)絡(luò)請求封裝

在yaml文件里邊添加如下依賴

新建一個network_config.dart文件存放網(wǎng)絡(luò)配置

ApiResponse是之前定義的公共接口返回實體 Flutter的Json數(shù)據(jù)解析之FlutterJsonBeanFactory插件

主要是對http異常和業(yè)務(wù)異常進(jìn)行處理。

上述封裝后,如果業(yè)務(wù)存在多個請求依賴調(diào)用,就需要統(tǒng)一的處理錯誤。

Dio支持自定義攔截器,繼承 Interceptor ,重寫 onRequest 和 onResponse 方法就行。

在初始化dio的地方,把攔截器加入dio對象的攔截器集合 dio.interceptors 中就行。

可以通過自定義的攔截器實現(xiàn),也可以引入 pretty_dio_logger 庫。

fastmock 上新建自己的項目,接口配置如下:

發(fā)起請求:

效果展示:

參考文章:

Flutter網(wǎng)絡(luò)請求之dio的初步使用

dio 是一個國產(chǎn)巨佬寫的一個Flutter的網(wǎng)絡(luò)請求庫,寫這篇的文章的時候更新到3.x版本了。這里是他的 官方中文 使用鏈接: dio

按照原作者所說:

我這里這個時候的是一個3.0.9版本,這里的 ^ 符號,表示3.多的庫比如說3.1.1啥的,也能更新下來。

dio 的原作者給了我們一個簡單的例子

我們基礎(chǔ)的使用,請求一個URL,這里就直接是 Dio().get(".****.com") 。這樣就可以通過get方式來請求我們的鏈接。

在我們項目中,我們當(dāng)然不能直接使用 Dio().get(".****.com") 這樣的方法,那樣的話如果以后我們要更換網(wǎng)絡(luò)請求的庫的話,我們要修改的地方,就會非常的多。類似的問題,曾經(jīng)在iOS開發(fā)的歷史上出現(xiàn)過一次。最初的時候iOS的開發(fā)者大多使用的是一個叫 ASI 的庫,但是在過了幾年的時候,這個庫不在維護(hù)了。這時候,我們就會去找一個新的網(wǎng)絡(luò)庫來代替他。當(dāng)時如果我們有500個文件中都直接使用 ASI ,我們就需要改動500個地方。這樣的體力和眼力消耗,實在是太驚人了。所以,我們一般會自己創(chuàng)建一個專門的 網(wǎng)絡(luò)管理 的類 NetworkManager 。在 NetworkManager 里,我們把調(diào)用方法抽取出一個基礎(chǔ)的方法,使用的時候,基于這個基礎(chǔ)的方法來調(diào)用。這樣,我們就能很方便的去進(jìn)去使用和維護(hù)。

這個時候我們就可以使用我們創(chuàng)建的類來直接調(diào)用我們的方法了。

這樣,我們的 dio 的初步使用就完成了。下一篇文章來寫 dio 的進(jìn)階使用。

分享題目:flutterdio,flutterdio 如何把map轉(zhuǎn)成對象
網(wǎng)址分享:http://chinadenli.net/article4/dsgieie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站企業(yè)建站靜態(tài)網(wǎng)站Google網(wǎng)站改版營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)