說明
Unity中UnityWebRequest和WWW都可以實作HTTP請求,這里使用的是UnityWebRequest發送Post請求,
UnityAPI-UnityWebRequest
架構
UnityWebRequest 生態系統將 HTTP 事務分解為三個不同的操作:
- 向服務器提供資料
- 從服務器接收資料
- HTTP 流量控制(例如,重定向和錯誤處理)
為了給高級用戶提供更好的界面,這些操作均由自己的物件進行管理:
- UploadHandler 物件處理資料到服務器的傳輸
- DownloadHandler 物件處理從服務器接收的資料的接收、緩沖和后處理
- UnityWebRequest 物件管理其他兩個物件,還處理 HTTP 流量控制,此物件是定義自定義標頭和 URL 的位置,也是存盤錯誤和重定向資訊的位置,

對于任何 HTTP 事務,正常的代碼流程如下:
- 創建 Web 請求物件
- 配置 Web 請求物件
- 設定自定義標頭
- 設定 HTTP 動詞(例如 GET、POST 和 HEAD - 除 Android 之外的所有平臺都允許使用自定義動詞)
- 設定 URL *(可選)創建上傳處理程式并將其附加到 Web 請求
- 提供要上傳的資料
- 提供要上傳的 HTTP 表單 *(可選)創建下載處理程式并將其附加到 Web 請求 - 發送 Web 請求
- 如果在協程中,可獲得 Send() 呼叫的結果以等待請求完成 (可選)讀取從下載處理程式接收的資料 (可選)從 UnityWebRequest 物件中讀取錯誤資訊、HTTP 狀態碼和回應標頭
步驟一:發送post請求
/*
url:請求地址
*/
public void Geturl()
{
StartCoroutine(PostRequest(url));
}
IEnumerator PostRequest(string url)
{
//所提交的表單
WWWForm form = new WWWForm();
//加上請求引數,如引數名“Content-Type",內容”application/json“
form.AddField("Content-Type", "application/json");
//發送Post請求
using (UnityWebRequest webRequest = UnityWebRequest.Post(url, form))
{
yield return webRequest.SendWebRequest();
if (!string.IsNullOrEmpty(webRequest.error))
{
Debug.LogError(webRequest.error);
}
else
{
//獲得回傳資料
Debug.Log(webRequest.downloadHandler.text);
}
}
}
步驟二:處理得到的Json資料
在上一步中,我們獲得了回傳資料webRequest.downloadHandler.text,現在處理回傳的內容得到想要的資料
得到類
利用Json在線決議網站,將webRequest.downloadHandler.text生成物體類
比如JSON資料為
{
"name":"so json 在線工具",
"url":"https://www.sojson.com",
"address":{
"city":"北京",
"country":"中國"
},
"arrayBrowser":[{
"name":"Google",
"url":"http://www.google.com"
},
{
"name":"Baidu",
"url":"http://www.baidu.com"
},
{
"name":"SoSo",
"url":"http://www.SoSo.com"
}]
}
生成的物體類為
public class Address
{
public string city { get; set; }
public string country { get; set; }
}
public class ArrayBrowser
{
public string name { get; set; }
public string url { get; set; }
}
public class Root
{
public string name { get; set; }
public string url { get; set; }
public Address address { get; set; }
public List<ArrayBrowser> arrayBrowser { get; set; }
}
將JSON內容賦值給物件
這里使用LitJSON插件,將Json資料賦值給物件,從而得到所需資料,
Root root = JsonMapper.ToObject<Root>(webRequest.downloadHandler.text);
string name = root.name;//"so json 在線工具"
string city = root.address.city; //"北京"
參考檔案:
Unity實作HTTP請求
UnityWebRequest
Unity讀取和決議JSON檔案(1)-JSON和物件的轉換
Unity 讀取決議Json 檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340950.html
標籤:其他
