UnityWebRequest


UnityWebRequest提供了一套標准的系統模塊,來完成Http請求和Http響應,它的基本目標就是滿足unity游戲與web后端服務的交互。它另外還支持一些http高級的功能,比如chunked http請求。(數據分塊傳輸),流式 POST/PUT操作,以及操作Http包頭和其它的http行為,比如delete,get等。

UnityWebRequest主要有兩部分組成:

  • 高級API(HLAPI  High Level API): 它封裝了低級API的接口,提供的接口,使用起來更加友好和方便。
  • 低級API(LLAPI Low Level API) : 它為高級使用者提供了最大程度的靈活性。

UnityWebRequest支持的平台:

  • 所有的Unity Editor平台和所有的獨立運行的應用
  • WebGL
  • 移動平台:IOS,Android
  • 通用的Window平台
  • PS4和PSVita
  • XboxOne
  • Nintendo Switch

UnityWebRequest 系統的結構

它將一個Http請求的事務分解成了三個不同的操作:

  • 向服務端提供數據
  • 從服務端獲取數據
  • Http流控制(比如重定向,錯誤捕獲等)

為了向高級用戶提供友好方便的接口支持,這些操作被封裝到各自所屬的對象里面:

  • UploadHandler 負責向服務端發送數據
  • DownloadHandler 負責接收,緩存和處理從服務器接收的數據
  • UnityWebRequest 負責管理其它的兩個對象,並且實現Http流的控制操作。在這個對象中,可以自定義Headers信息,URLs,以及存儲錯誤和重定向信息。

如下圖所示:

使用UnityWebRequest,對於任何一個Http請求事務,通常的代碼流程是這樣的:

  • 創建一個Web請求對象
  • 配置Web請求對象:設置自定義的Headers,設置Http行為比如GET,POST,HEADER (注意,自定義行為除了安卓平台,其它平台都支持),然后設置請求的URL。
  • (操作)創建一個Upload Handler 並且和Web Request綁定:提供請求的參數數據,或者提供要提交的表單數據
  • (操作)創建一個Download Handler並且和Web Request綁定
  • 發送Web Request,如果是在一個協程中,你需要yield Send()方法的結果,然后等待請求的完成
  • (操作)讀取從Download Handler中接收的數據
  • (操作)從UnityWebRequest對象中讀取錯誤信息,Http狀態碼以及響應的包頭信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM