十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
最近在做公司工業(yè)互聯(lián)網(wǎng)的一個項(xiàng)目 之前做了一個ipad 版本的 在使用dio網(wǎng)絡(luò)請求框架的時候發(fā)現(xiàn)請求登錄的時候后臺一直報(bào)簽名錯誤問題? 檢查了幾遍寫的簽名方法沒有發(fā)現(xiàn)錯誤 后面仔細(xì)查了下 是服務(wù)器不能識別我傳的數(shù)據(jù)。。。
創(chuàng)新互聯(lián)建站專注于博羅網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供博羅營銷型網(wǎng)站建設(shè),博羅網(wǎng)站制作、博羅網(wǎng)頁設(shè)計(jì)、博羅網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造博羅網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供博羅網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
如果content-type是form-data 我們需要通過FormData類來構(gòu)建數(shù)據(jù),否則服務(wù)器將無法識別
同時需要傳入一個Option指明content-type,而form-data的content-type完整類型表述為:multipart/form-data
主要我是個新手啊?
查看源碼?
headers里面并有multipart/form-data 這個類型啊? ? 講道理這個是常用的contentType啊 應(yīng)該要列出來才對啊?
咋整?
自己設(shè)置。。。。
后臺就可以正常接收表單參數(shù)了
dio 是一個國產(chǎn)巨佬寫的一個Flutter的網(wǎng)絡(luò)請求庫,寫這篇的文章的時候更新到3.x版本了。這里是他的 官方中文 使用鏈接: dio
按照原作者所說:
我這里這個時候的是一個3.0.9版本,這里的 ^ 符號,表示3.多的庫比如說3.1.1啥的,也能更新下來。
dio 的原作者給了我們一個簡單的例子
我們基礎(chǔ)的使用,請求一個URL,這里就直接是 Dio().get(".****.com") 。這樣就可以通過get方式來請求我們的鏈接。
在我們項(xiàng)目中,我們當(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個地方。這樣的體力和眼力消耗,實(shí)在是太驚人了。所以,我們一般會自己創(chuàng)建一個專門的 網(wǎng)絡(luò)管理 的類 NetworkManager 。在 NetworkManager 里,我們把調(diào)用方法抽取出一個基礎(chǔ)的方法,使用的時候,基于這個基礎(chǔ)的方法來調(diào)用。這樣,我們就能很方便的去進(jìn)去使用和維護(hù)。
這個時候我們就可以使用我們創(chuàng)建的類來直接調(diào)用我們的方法了。
這樣,我們的 dio 的初步使用就完成了。下一篇文章來寫 dio 的進(jìn)階使用。
網(wǎng)絡(luò)請求, 先想到的是dart官方維護(hù)的 http 庫. 由于我們項(xiàng)目組網(wǎng)絡(luò)請求都采用的表單結(jié)構(gòu), http 貌似不支持表單格式的網(wǎng)絡(luò)請求; 后來查看 dio 庫, 發(fā)現(xiàn)支持 FormData , 完美解決!
官方表單網(wǎng)絡(luò)請求示例:
比葫蘆畫瓢, 嘗試下
在Android中會在基礎(chǔ)類中監(jiān)聽手機(jī)的網(wǎng)絡(luò)狀態(tài),并作出相應(yīng)的提示,在Flutter 中也提供了相應(yīng)的package,但是略有不同;
Flutter 網(wǎng)絡(luò)請求報(bào)錯 Failed host lookup:
一、如果是iOS真機(jī)調(diào)試報(bào)錯
1.檢查iOS是否開啟網(wǎng)絡(luò)權(quán)限(在設(shè)置中檢查一下),(如果HTTP,在info中 添加 ATS)
二、如果是Android模擬器或真機(jī)調(diào)試報(bào)錯
在debug和release目錄中的AndroidManifest.xml中加上
uses-permission android:name="android.permission.INTERNET"/
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/
如果還是不行,執(zhí)行
flutter clean