-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 營(yíng)銷(xiāo)推廣 > 專(zhuān)題列表 > 正文
前端調(diào)接口獲取狀態(tài)(前端調(diào)接口獲取狀態(tài)怎么設(shè)置)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于前端調(diào)接口獲取狀態(tài)的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,有小程序、在線網(wǎng)頁(yè)版、PC客戶端和批量生成器
問(wèn)友Ai官網(wǎng):https://ai.de1919.com。
本文目錄:
前端怎么調(diào)用api接口
方法/步驟
先定義一個(gè)簡(jiǎn)單的webapi,簡(jiǎn)單到差不多直接用vs2010自動(dòng)生成的webapi代碼。
其中的TestModle是一個(gè)簡(jiǎn)單的class,如下
public class TestModle
{
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
}
前端頁(yè)面放四個(gè)代表get,post,put,delete的按鈕,在加一個(gè)div顯示返回值
前端代碼中加載jquery,在定義四個(gè)按鈕的click事件
get和post,我習(xí)慣用$.get和$.post,當(dāng)然也能用$.ajax.
get直接返回webapi get的return值,post的話我就不在后端做處理了直接返回傳入的值,這里只做示范
put和delete,只能用$.ajax來(lái)處理。
put的話一般用于update某個(gè)id的數(shù)據(jù)信息
delete用于刪除某個(gè)id的數(shù)據(jù),如下圖所示
點(diǎn)擊每個(gè)按鈕,可以在頁(yè)面上看到相應(yīng)的效果
前端調(diào)用藍(lán)牙接口怎么設(shè)置
我實(shí)現(xiàn)的小程序模塊自動(dòng)連接(根據(jù)需要,可改手動(dòng)),是在小程序初始化完成時(shí)開(kāi)始自動(dòng)調(diào)用執(zhí)行。大致流程:
開(kāi)啟藍(lán)牙適配;
獲取藍(lán)牙適配器狀態(tài),判斷設(shè)備藍(lán)牙是否可用;
判斷藍(lán)牙適配器可用時(shí)開(kāi)啟掃描藍(lán)牙設(shè)備和開(kāi)啟獲取已連接的藍(lán)牙設(shè)備;
如果開(kāi)啟掃描藍(lán)牙設(shè)備失敗 5 s 后,自動(dòng)再次開(kāi)啟掃描;
開(kāi)啟掃描藍(lán)牙設(shè)備成功后,開(kāi)啟監(jiān)聽(tīng)已掃描的設(shè)備;
如果已掃描到的新設(shè)備,包含特定名稱(chēng)規(guī)律,則開(kāi)始連接該設(shè)備;
開(kāi)啟獲取已連接藍(lán)牙設(shè)備,成功后,連接包含特定名稱(chēng)規(guī)律的設(shè)備;
兩者都無(wú)法搜索到相應(yīng)設(shè)備,則等待 5 s,重新搜索;
開(kāi)始連接某設(shè)備時(shí)停止掃描設(shè)備,停止循環(huán)獲取已連接設(shè)備;
連接成功后停止掃描設(shè)備,停止循環(huán)獲取已連接設(shè)備。
下面,我們一步步來(lái)完成這個(gè)流程。
開(kāi)始連接藍(lán)牙設(shè)備
1. 開(kāi)啟連接
app.js的onLaunch()方法里中,我們調(diào)用this.startConnect();來(lái)開(kāi)啟連接,彈出提示框,進(jìn)行配對(duì)。如果失敗,則提示設(shè)備藍(lán)牙不可用,同時(shí)開(kāi)啟藍(lán)牙適配器狀態(tài)監(jiān)聽(tīng)。
2. 獲取本機(jī)藍(lán)牙狀態(tài)
調(diào)用this.getBluetoothAdapterState()獲取本機(jī)藍(lán)牙適配器狀態(tài),判斷是否可用。若available為false,則為用戶沒(méi)有開(kāi)啟系統(tǒng)藍(lán)牙。
同時(shí),判斷程序還沒(méi)有開(kāi)始搜索藍(lán)牙設(shè)備,調(diào)用this.startBluetoothDevicesDiscovery()開(kāi)始掃描附近的藍(lán)牙設(shè)備,以及this.getConnectedBluetoothDevices(),獲取本機(jī)已配對(duì)的藍(lán)牙設(shè)備。
3. 開(kāi)始搜索新設(shè)備
開(kāi)始搜索藍(lán)牙設(shè)備startBluetoothDevicesDiscovery(),提示藍(lán)牙搜索。
4. 獲取已配對(duì)的藍(lán)牙設(shè)備
需要注意的是,參數(shù)services(Array)是必填的,但是官方示例中以及各種坑爹 demo 里從沒(méi)見(jiàn)過(guò)有誰(shuí)填寫(xiě)。不填寫(xiě)這個(gè)屬性此方法,將無(wú)法獲取到任何已配對(duì)設(shè)備。
如果要調(diào)用此方法,則代表需要連接特定設(shè)備,并且知道該設(shè)備的一個(gè)主服務(wù)serviceId。
如暫時(shí)不知道這個(gè) ID,可以先手動(dòng)連接一次想要連接的設(shè)備,然后獲取service列表,記錄屬性primary為true的值至少一個(gè)。5. 處理搜索功能開(kāi)啟失敗的情況
如果搜索功能啟動(dòng)失敗,回到第 2 步,重新檢查藍(lán)牙適配器。如果可用,開(kāi)啟藍(lán)牙搜索功能并開(kāi)啟發(fā)現(xiàn)附近藍(lán)牙設(shè)備事件監(jiān)聽(tīng):this.onBluetoothDeviceFound()。
此方法可自定義過(guò)濾一些無(wú)效的藍(lán)牙設(shè)備,比如name為空的,或是產(chǎn)品開(kāi)發(fā)中,需要過(guò)濾設(shè)備名稱(chēng)不含有特定規(guī)律字符串的設(shè)備。
6. 自動(dòng)配對(duì)設(shè)備
在第 5 步中發(fā)現(xiàn)了某個(gè)想配對(duì)的設(shè)備,則獲取到該設(shè)備的deviceId,然后用this.startConnectDevices()接口,開(kāi)始配對(duì)該設(shè)備。
開(kāi)啟連接后,為了避免出現(xiàn)沖突,一旦開(kāi)啟連接,則需要終止掃描附近藍(lán)牙設(shè)備、終止讀取本機(jī)已配對(duì)設(shè)備
7. 連接成功后握手
連接成功后,使用this.getService(deviceId)接口,獲取設(shè)備的所有服務(wù)。
8. 讀取服務(wù)的特征值
9. 意外處理
如果掃描到的設(shè)備中沒(méi)有想要連接的設(shè)備,可以嘗試使用系統(tǒng)藍(lán)牙手動(dòng)配對(duì),然后再小程序中調(diào)用getConnectedBluetoothDevices()獲取本機(jī)已配對(duì)的藍(lán)牙設(shè)備,然后過(guò)濾設(shè)備(可能獲取多個(gè)已配對(duì)的藍(lán)牙設(shè)備)。
然后,將已獲取的藍(lán)牙設(shè)備deviceId列表放入到一個(gè)數(shù)組中,然后調(diào)用自定義方法this.loopConnect();
思路:通過(guò)遞歸調(diào)用獲取已配對(duì)藍(lán)牙設(shè)備的,如果獲取到了就去連接,如果devicesId[x]為空,說(shuō)明上傳調(diào)用時(shí),獲取到的已配對(duì)設(shè)備全部連接失敗了。
這時(shí)候,我們需要?jiǎng)t開(kāi)啟重新獲取已配對(duì)藍(lán)牙設(shè)備,并開(kāi)啟掃描附近藍(lán)牙設(shè)備。
10. 自動(dòng)循環(huán)重試
startConnectDevices('loop', array)方法,是當(dāng)獲取已配對(duì)藍(lán)牙設(shè)備進(jìn)行連接時(shí)調(diào)用。
其中的處理邏輯上文已經(jīng)貼出,意思就是在連接失敗后fail方法里累加一個(gè)全局變量,然后回調(diào)loopConnect(array)方法。
11. 手動(dòng)連接
上文介紹的方法是為了直接自動(dòng)連接,如果不需要自動(dòng)連接,可使用方法getBluetoothDevices(),獲取已掃描到的藍(lán)牙設(shè)備的列表。
開(kāi)發(fā)者可以做個(gè)頁(yè)面顯示出設(shè)備名,用戶點(diǎn)擊某個(gè)設(shè)備后,才開(kāi)始連接。
需要注意的事項(xiàng)
that.serviceId是在初始化時(shí)設(shè)置的,由于對(duì)需要連接設(shè)備的主服務(wù)serivceId和各種特征值都是已知的,因此可以這樣做。如果不可知,可以做一個(gè)掃描方法自己檢查特征值的用途。
連接成功后的writeBLECharacteristicValue和openNotifyService操作需要注意,如果同時(shí)開(kāi)啟這兩項(xiàng)操作要先調(diào)用wirte再開(kāi)啟notify(原因未知,個(gè)人心得)。
3、經(jīng)提醒,我發(fā)現(xiàn)還可以再完善一下在onBlueToothAdapterStateChange()監(jiān)聽(tīng)藍(lán)牙適配器狀態(tài),以此判斷連接過(guò)程中、連接后用戶開(kāi)關(guān)了設(shè)備藍(lán)牙。如果判斷到關(guān)了藍(lán)牙,發(fā)出開(kāi)啟藍(lán)牙的提示;如果監(jiān)聽(tīng)到開(kāi)啟了,就重新回到第 1 步。
web前端怎么調(diào)用api接口
1、首先需要確定第三方的接口的基本信息:地址、請(qǐng)求方式,參數(shù)、返回值,接口模式這里第三方的接口是restful風(fēng)格的,采用get請(qǐng)求。
2、確定好接口的相關(guān)模式之后,這里編寫(xiě)http的請(qǐng)求,用參數(shù)、請(qǐng)求模式構(gòu)造請(qǐng)求。
3、這里最重要的構(gòu)造http的請(qǐng)求,這里采用CloseableHttpClient,設(shè)置相關(guān)的header,采用HttpResponse接受用戶的返回值。
4、在業(yè)務(wù)類(lèi)中只需要封裝相關(guān)的請(qǐng)求,把參數(shù)傳入給接口中即可,這里返回jsonObject方便解析使用。
5、調(diào)用api接口還有其他的模式,如圖通過(guò)MultiValueMap,封裝參數(shù),構(gòu)造HttpEntity對(duì)象,RestTemplate 發(fā)送請(qǐng)求即可。
以上就是關(guān)于前端調(diào)接口獲取狀態(tài)相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢(xún),客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
前端主要負(fù)責(zé)的工作(前端主要負(fù)責(zé)的工作有哪些)
園林景觀設(shè)計(jì)簡(jiǎn)易圖片素材(園林景觀設(shè)計(jì)簡(jiǎn)易圖片素材下載)
視頻號(hào)的價(jià)值和意義(視頻號(hào)的價(jià)值和意義有哪些)
猜你喜歡
廢文寫(xiě)作能賺錢(qián)嗎(廢文寫(xiě)文能賺錢(qián)嗎)
chatGPT對(duì)接微信(ChatGPT對(duì)接微信小程序)
學(xué)會(huì)新技能的朋友圈(學(xué)會(huì)新技能的朋友圈幽默)
cookie可以存什么類(lèi)型的值(cookie可以存儲(chǔ)對(duì)象嗎)
偽原創(chuàng)文案改寫(xiě)能過(guò)審嗎(偽原創(chuàng)文案編輯)
如何用diskpart創(chuàng)建分區(qū)(diskpart 創(chuàng)建分區(qū))
chatGPT注冊(cè)地區(qū)不支持(chatGPT注冊(cè)地區(qū)不支持)
如何發(fā)布自己寫(xiě)的小說(shuō)(如何發(fā)布自己寫(xiě)的小說(shuō)賺錢(qián))