Http組件的介紹

来源:http://www.cnblogs.com/andbut/archive/2016/04/20/5411016.html
-Advertisement-
Play Games

do_Http組件就是實現http/https協議的組件. 首先要說明一下,Do平臺只是一個移動端開發的平臺,不涉及任何後臺服務端的技術,你可以使用你自己任何熟悉的語言和技術來實現服務端,do_Http組件就是用來和服務端通信。 http是一個最基礎的應用層的通信協議,開發者應該很熟悉,但是在QQ群 ...


do_Http組件就是實現http/https協議的組件.

首先要說明一下,Do平臺只是一個移動端開發的平臺,不涉及任何後臺服務端的技術,你可以使用你自己任何熟悉的語言和技術來實現服務端,do_Http組件就是用來和服務端通信。

http是一個最基礎的應用層的通信協議,開發者應該很熟悉,但是在QQ群和很多同學討論,發現有不少人沒有很好的理解http。我這裡再簡單描述一下,熟悉的人就跳過吧。

協議的介紹

所謂協議就是指http的客戶端和服務端的一個協商的一個標準,一個規範,是一個可以用文字來描述能用紙來記錄下來的文檔。

比如說假設一個規範規定

  1. 客戶端發送“hi”給服務端,服務端必須回答“hi client"
  2. 客戶端發送“hello”給服務端,服務端必須回答“hello hello”
  3. ......

那麼不管你客戶端是用Java還是什麼語言,服務端是用C#還是別的語言,都必須按照這個規範,都必須客戶端發hi,服務端返回hi client

當然http協議要複雜很多,詳細的可以參考http協議的介紹。常用的語言比如Java,C#,ios等等都有這個協議的實現,do_Http也一樣。這些語言實現的方式各有不同,有不同名字的屬性,事件,方法,但是本質上都是實現這套規範。

HTTP通信的過程

  • 客戶端利用一些屬性事件方法,拼接出一個請求報文。這個報文是有一定格式的,而且這個格式必須正確。報文通常分報文header和報文body。它的大概格式類似如下例子:
  • POST /sn/index HTTP/1.1
    Accept: */*
    Accept-Language: zh-cn
    host: localhost
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 12
    Connection:close
    sn=123&n=asa

     

do_Http組件提供了一些屬性和方法來拼接這個請求報文:

  1. body post的數據
  2. contentTypepost的數據格式
  3. method:數據請求的方法,基本的是GETPOST,也支持DELETEPUT等標準
  4. timeout:毫秒為單位的超時設置
  5. url:請求的地址
  6. setRequestHeader():設置header里的屬性和屬性值,可以執行多次,每次增加一條
  • 客戶端把報文發送到服務端,do_Http組件提供了4個方法來處理,本質上這4個方法都是一樣,只不過為了方便,分成了4個應用不同的場景。
  1. request():最基本的請求方法,通常只能發送文本
  2. download():可以直接發送一個請求把服務端的文件下載下來保存到手機端,可以監控下載的進度。
  3. upload():可以把本地的文件上傳到服務端,可以監控上傳的進度。
  4. form():有點類似requestupload的混合,它可以同時發送多個文本也能發送多個文件。類似 web的表單提交。
  • 服務端接受到客戶端發送過來的請求報文,然後解析成數據。這一塊和do平臺無關,可以用你自己熟悉的後臺開發語言來實現。

  • 服務端對請求作出相應處理之後,返回一個 響應報文給前端,這個報文也是有格式的,報文通常分報文header和報文body。類似下麵的格式:

  1. HTTP/1.1 200 OK
    Date: Sat, 31 Dec 2005 23:59:59 GMT
    Content-Type: text/html;charset=ISO-8859-1
    Content-Length: 122
    <html>
    <head>
    <title>Wrox Homepage</title>
    </head>
    <body>
    <!-- body goes here -->
    </body>
    </html>

     


這個步驟也和do平臺無關。

  • 客戶端接收服務端返回的響應報文做相應的處理。
    do_Http提供4個介面來處理返回的數據
  1. fail:請求出錯事件
  2. progress:發送和接受數據時可以用這個監控進度
  3. result:發送後接受完數據會觸發這個事件
  4. success:只有接受到狀態碼200才會觸發這個事件,這個事件不夠完善,還是用result事件更合適

完整的測試示例

    1. 客戶端:分別實現get,post,upload,form,download的http請求。本質上其實就2種get和post。do_http還支持put,delete等,這裡沒有演示。
      為了看到請求的報文,服務端會把請求的報文作為響應的報文數據一部分返回到客戶端。需要輸入你自己搭建的服務端的IP地址和埠。

    2. 服務端利用java的servlet來模擬一個服務端,使用的jetty容器,可以不用安裝tomcat服務,直接當成一個應用可以運行。就是作為大家做服務端的參考和調試用。源代碼在GIT。服務端啟動一個8080埠的web服務。
      詳細的示例參考這裡


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用js模擬jQuery方法,體會封裝思想 <!DOCTYPE html><html><head><meta charset="UTF-8"><title>simulationJquery.html</title> </head><body> <img src=images/123.jpg/> <in ...
  • background-size的基本屬性 background-size: 可以設定背景圖像的尺寸,該屬性是css3中的,在移動端使用的地方很多,比如最常見的地方在做響應性佈局的時候,比如之前做的項目中有輪播圖片,為了自適應不同大小解析度的圖片,我門需要使用css3中的媒體查詢來針對不同的解析度設置 ...
  • JavaScript是一個絕冠全球的編程語言,可用於Web開發、移動應用開發(PhoneGap、Appcelerator)、伺服器端開發(Node.js和Wakanda)等等。JavaScript還是很多新手踏入編程世界的第一個語言。既可以用來顯示瀏覽器中的簡單提示框,也可以通過nodebot或no ...
  • 如果你看到這篇文章,我確信你毫無疑問會認為jQuery是一個使用簡便的庫。jQuery可能使用起來很簡單,但是它仍然有一些奇怪的地方,對它基本功能和概念不熟悉的人可能會難以掌握。但是不用擔心,我下麵已經把代碼劃分成小部分,做了一個簡單的指導。那些語法看起來可能過於複雜,但是如果進入到它的思想和模式中 ...
  • 本文將向大家介紹如何利用CSS3的新樣式屬性製作一個HTML5的Logo。我們先來看看最終的效果: 不要懷疑,上面的logo完全由HTML+CSS實現。我們將logo劃分為盾形、數字5和輻射背景三大部分,下麵將分別實現每個部分。 盾形 盾形在外形上是左右對稱的,因此我們可先完成左半邊,右半邊可複製過 ...
  • 這其中的jquery代碼中的獲得高度用的clientHeight,介紹一下幾種不同的獲得方式以及他們的差別。 這四種瀏覽器分別為IE(Internet Explorer)、NS(Netscape)、Opera、FF(FireFox)。 clientHeight 大家對 clientHeight 都沒 ...
  • npm install <name>安裝nodejs的依賴包 例如npm install express 就會預設安裝express的最新版本,也可以通過在後面加版本號的方式安裝指定版本,如npm install [email protected] npm install <name> -g 將包安裝到全局 ...
  • 這個圖片是我用xmind編輯的。歡迎大家來糾正或添加! 再來說說我對網站開發的理解與碰到的問題。 網站的前端有幾個部分我覺得很重要: 1.優雅的文字提示 2.合理的頁面設計 3.適當的腳本特效 一進入這個網站,就讓人有一種非常舒適的感覺。並且在舒適的基礎上有奪人眼球的特效,再有貼心的提示,我相信肯定 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...