項目4任務(wù)3-在Node-RED 中搭建Web服務(wù)器_第1頁
項目4任務(wù)3-在Node-RED 中搭建Web服務(wù)器_第2頁
項目4任務(wù)3-在Node-RED 中搭建Web服務(wù)器_第3頁
項目4任務(wù)3-在Node-RED 中搭建Web服務(wù)器_第4頁
項目4任務(wù)3-在Node-RED 中搭建Web服務(wù)器_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

2相關(guān)知識34任務(wù)小結(jié)與練習(xí)1任務(wù)實施任務(wù)引入與目標(biāo)在Node-RED中搭建Web服務(wù)器一、任務(wù)引入與目標(biāo)任務(wù)目標(biāo)任務(wù)3在Node-RED中搭建Web服務(wù)器,APP收到用戶反饋意見時,APP中創(chuàng)建的HTTP客戶端連接服務(wù)器;服務(wù)器對HTTP請求進(jìn)行處理,完成郵件轉(zhuǎn)發(fā),并將響應(yīng)發(fā)回;APP接收HTTP響應(yīng),處理其中的數(shù)據(jù)部分。實現(xiàn)效果:(1)手機(jī)點(diǎn)擊“反饋建議”按鈕后,調(diào)出對話框。(2)在對話框輸入內(nèi)容后,以post方式向Node-RED中創(chuàng)建的HTTP服務(wù)端提交HTTP請求,網(wǎng)址為后臺url加上后綴APP_feedback。(3)Node-RED中創(chuàng)建的HTTP服務(wù)端收到請求后,發(fā)回響應(yīng)內(nèi)容“成功收到,感謝您的反饋與建議”,APP將接收的響應(yīng)內(nèi)容在屏幕上Toast出來。(4)后臺將收到的內(nèi)容轉(zhuǎn)發(fā)至作者郵箱。任務(wù)引入如果用戶對APP有一些建議,那么該怎樣聯(lián)系作者呢?可以在Node-RED中創(chuàng)建Web服務(wù)器,當(dāng)用戶有建議時,可以通過HTTP客戶端向Web服務(wù)器提交請求,由Node-RED處理。二、相關(guān)知識Node-RED中的郵箱控件Node-RED的輸出郵箱控件,把msg.payload作為郵件內(nèi)容,把msg.topic作為郵件主題。消息接收者可以在節(jié)點(diǎn)中配置,如果它是空白的,那么應(yīng)該使用msg.to來設(shè)置它。消息的屬性如果留下空白,也可以指定msg.cc(轉(zhuǎn)發(fā)的收件箱地址)屬性。注意,使用SMTP的SSL端口465。郵箱的IMAP和SMTP服務(wù)IMAP是一種電子郵件接收的協(xié)議,用于管理和檢索來自接收服務(wù)器的電子郵件消息。SMTP是一種電子郵件發(fā)送的協(xié)議,可以使用SMTP從郵件客戶端(如QQ郵箱)向接收電子郵件服務(wù)器發(fā)送、中繼或轉(zhuǎn)發(fā)郵件。SMTP中繼服務(wù)可以幫助用戶發(fā)送電子郵件,而不需要建立自己的SMTP服務(wù)器。二、相關(guān)知識以QQ郵箱為例,設(shè)置IMAP(接收)/SMTP(發(fā)送)服務(wù)。需要保證IMAP/SMTP服務(wù)這一項是開啟的,如圖4-29所示。如圖4-30所示,成功開啟后,會給一個授權(quán)碼,需要記住。如果忘記也沒關(guān)系,可以再次生成。上述配置的IMAP和SMTP中繼服務(wù),會在Node-RED中的接收和發(fā)送郵件節(jié)點(diǎn)用到,用來實現(xiàn)接收郵件和發(fā)送郵件功能。圖4-29QQ郵箱的IMAP/SMTP服務(wù)圖4-30IMAP/SMTP服務(wù)的授權(quán)碼三、任務(wù)實施實施設(shè)備部署了AndroidStudio和Node-RED開發(fā)環(huán)境的計算機(jī)。實施過程1.APP設(shè)計APP設(shè)計里,需要用到OkHttp框架和對話框的知識。在ThirdActivity.java中,針對btn32進(jìn)行設(shè)計。(1)對話框。已經(jīng)添加viewBinding框架,需要在第三個頁面編寫btn32按鈕的事件監(jiān)聽方法。binding3.btn32.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){finalEditTextet=newEditText(ThirdActivity.this);et.setText("很好");AlertDialogalertDialog=newAlertDialog.Builder(ThirdActivity.this).setTitle("請?zhí)峤灰庖娊ㄗh").setView(et).setPositiveButton("確定",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialogInterface,inti){textSuggest=et.getText().toString();Post_as();}}).setNegativeButton("取消",null).show();}})三、任務(wù)實施前面需要定義變量:privateStringtextSuggest;點(diǎn)擊“確定”按鈕后,調(diào)用Post_as()函數(shù),將文本框的內(nèi)容textSuggest以post的方式、HTTP請求提交給后臺:11:1880/APP_feedback。(2)異步請求Post_as()函數(shù)。所謂異步請求,就是把請求加入enqueue(隊列)中,等待執(zhí)行。接下來,我們在異步請求函數(shù)Post_as()中使用POST方法,提交異步請求,代碼如下://異步請求函數(shù)privatevoidPost_as(){//創(chuàng)建表單FormBodyformBody=newFormBody.Builder().add("username",).add("feedback",textSuggest).build();//將表單數(shù)據(jù)放入request中,通過post方法提交Requestrequest=newRequest.Builder().url("11:1880/APP_feedback").post(formBody).build();//將客戶端加入隊列中,會自動在子線程中運(yùn)行,返回有2種情況:失敗或者有響應(yīng)okHttpClient.newCall(request).enqueue(newCallback(){@OverridepublicvoidonFailure(@NonNullCallcall,@NonNullIOExceptione){e.printStackTrace();}三、任務(wù)實施如果沒有收到response,那么不做處理;如果收到response,那么Toast出后臺響應(yīng)的數(shù)據(jù)部分。@OverridepublicvoidonResponse(@NonNullCallcall,@NonNullResponseresponse)throwsIOException{//獲取響應(yīng)的數(shù)據(jù)部分Stringresult=response.body().string();//在主線程中Toast出來runOnUiThread(newRunnable(){@Overridepublicvoidrun(){Toast.makeText(ThirdActivity.this,"后臺回復(fù):"+result,Toast.LENGTH_SHORT).show();}});}});}三、任務(wù)實施其中,11為Node-RED所部署的電腦在局域網(wǎng)中的IP地址。如圖4-31所示,查看IP地址的方法:cmd命令行。輸入:ipconfig。至此,APP設(shè)計就完成了,結(jié)構(gòu)如圖4-32所示。圖4-31查看IP地址圖4-32APP結(jié)構(gòu)三、任務(wù)實施2.Node-RED流程設(shè)計(1)測試打印APP提交的表單信息。在cmd命令行,輸入:node-red。啟動Node-RED。注意不要關(guān)閉cmd。在NR中,添加一個httpin節(jié)點(diǎn)和一個debug節(jié)點(diǎn),連接起來。httpin是一個提供Web服務(wù)的HTTP端點(diǎn)(HTTP服務(wù)器),供APP訪問。如圖4-33所示,配置httpin節(jié)點(diǎn),請求方式為POST;URL的后綴為/APP_feedback,完整的URL為11:1880/APP_feedback。debug節(jié)點(diǎn)直接打印消息內(nèi)容,即httpin節(jié)點(diǎn)(HTTP服務(wù)器)收到的消息內(nèi)容。圖4-33編輯httpin節(jié)點(diǎn)三、任務(wù)實施部署流程2,運(yùn)行APP。當(dāng)APP提交反饋意見“很好!!!”時,Node-RED的debug打印內(nèi)容如圖4-34所示。圖4-34表明:Node-RED成功收到APP的HTTP客戶端POST的數(shù)據(jù),這正是APP代碼的2個表單項:圖4-34Node-RED接收到HTTP請求//創(chuàng)建表單FormBodyformBody=newFormBody.Builder().add("username",).add("feedback",textSuggest).build();三、任務(wù)實施(2)Web展示APP提交的表單信息。在Web頁面顯示APP提交的表單內(nèi)容是較為容易的,回顧之前的JSON解析知識即可完成。設(shè)計dashboard,添加頁面(菜單)“實時反饋與建議”,如圖4-35所示,添加一個組“反饋與建議”,組里面添加2個“text”節(jié)點(diǎn)作為組件。2個text節(jié)點(diǎn)的配置如圖4-36所示。圖4-35流程中添加反饋與建議部分圖4-36編輯text節(jié)點(diǎn)三、任務(wù)實施查看Web頁面,如圖4-37所示。(3)Web服務(wù)器給APP發(fā)回response。如圖4-38所示,在流程中增加一個“change”節(jié)點(diǎn)和一個“httpresponse”節(jié)點(diǎn)。httpresponse節(jié)點(diǎn)將響應(yīng)(response)送回提交請求(request)的HTTP客戶端。圖4-37查看Web頁面圖4-38流程中設(shè)定響應(yīng)內(nèi)容圖4-39編輯change節(jié)點(diǎn)change節(jié)點(diǎn)配置如圖4-39所示。三、任務(wù)實施httpresponse節(jié)點(diǎn)按默認(rèn)設(shè)置即可,如圖4-40所示。結(jié)果如圖4-41所示:APP提交之后,會Toast從后臺response的內(nèi)容。圖4-40編輯httpresponse節(jié)點(diǎn)圖4-41APP接收到response三、任務(wù)實施在流程中添加發(fā)送郵件節(jié)點(diǎn),如圖4-42所示。如果沒有這個節(jié)點(diǎn),那么需要安裝,如圖4-43所示。圖4-42添加發(fā)送郵件節(jié)點(diǎn)圖4-43安裝email節(jié)點(diǎn)三、任務(wù)實施發(fā)送郵件節(jié)點(diǎn)配置,包括收件箱地址、郵件服務(wù)器和端口號、發(fā)件箱地址和授權(quán)碼,如圖4-44所示。部署流程,查看收件箱是否收到郵件,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論