網路連線範本
透過網路連線範本,您能學習到:
1.透過腳本建立HTTPS GET連線。
2.透過腳本建立HTTPS POST連線。
*目標網域名稱需要申請加入白名單
準備工作
1.匯入範例場景,可以開啟PackageManager的CHTLand SDK,並點選說明頁的Samples頁籤,找到Tutorial Network並點選Import按鈕匯入。
測試流程
1.設定Config面板的Active Template。
2.設定Scene、Assembly Definition等欄位,相關檔案放置於Assets/Samples/CHTLand SDK/x.x.x/TutorialNetwork目錄下。
3.點選Test按鈕。
場景配置
1.進入場景時會自動建立三個連線並使用Debug.Log印出結果,可開啟瀏覽器的開發者面板觀察訊息。三個連線分別是HTTPS GET、POST與POST FORM。
腳本使用
1.取得IValidatedWebRequest網路請求物件
async void Start()
{
IValidatedWebRequest request = CHTLandProxy.networkRequestManager.GetValidatedWebRequest();
// 開始HTTP Get請求 (使用async)
await GetHttpBinDataAsync(request);
// 開始HTTP Post請求 (使用async)
await PostHttpBinDataAsync(request);
// 開始HTTP Post Form請求 (使用async)
await PostFormDataAsync(request);
}
2.建立HTTPS GET連線
// 使用UnityWebRequest從httpbin.org獲取數據 (async Task版本)
private async Task GetHttpBinDataAsync(IValidatedWebRequest validatedRequest)
{
string url = "https://httpbin.org/get";
Debug.Log("開始GET請求: " + url);
// 使用ValidatedWebRequest獲取UnityWebRequest物件
UnityWebRequest webRequest = validatedRequest.Get(url);
if (webRequest == null)
{
Debug.LogError("無法創建GET請求,URL可能不在允許的域名清單中或使用了非HTTPS協議");
return;
}
// 發送請求 (使用async/await替代yield return)
var operation = webRequest.SendWebRequest();
// 等待請求完成
while (!operation.isDone)
{
await Task.Yield();
}
// 檢查是否有錯誤
if (webRequest.result != UnityWebRequest.Result.Success)
{
Debug.LogError("網絡請求錯誤: " + webRequest.error);
}
else
{
// 獲取並打印JSON響應
string jsonResult = webRequest.downloadHandler.text;
Debug.Log("GET請求成功! 收到的JSON響應 (async方式):");
Debug.Log(jsonResult);
// 可以進一步解析JSON數據
// var resultData = JsonUtility.FromJson<YourDataType>(jsonResult);
}
// 釋放資源
webRequest.Dispose();
}
3.建立HTTPS POST連線
// 使用UnityWebRequest向httpbin.org發送Post數據 (async Task版本)
private async Task PostHttpBinDataAsync(IValidatedWebRequest validatedRequest)
{
string url = "https://httpbin.org/post";
Debug.Log("開始POST請求: " + url);
// 創建POST請求的數據
var postData = new Dictionary<string, string>
{
{ "name", "TestUser" },
{ "message", "Hello from CHTLand App" }
};
string jsonData = JsonUtility.ToJson(new SerializableDict(postData));
// 使用ValidatedWebRequest獲取UnityWebRequest物件
UnityWebRequest webRequest = validatedRequest.Post(url, jsonData, "application/json");
if (webRequest == null)
{
Debug.LogError("無法創建Post請求,URL可能不在允許的域名清單中或使用了非HTTPS協議");
return;
}
// 發送請求
var operation = webRequest.SendWebRequest();
// 等待請求完成
while (!operation.isDone)
{
await Task.Yield();
}
// 檢查是否有錯誤
if (webRequest.result != UnityWebRequest.Result.Success)
{
Debug.LogError("POST請求錯誤: " + webRequest.error);
}
else
{
// 獲取並打印JSON響應
string jsonResult = webRequest.downloadHandler.text;
Debug.Log("POST請求成功! 收到的JSON響應:");
Debug.Log(jsonResult);
}
// 釋放資源
webRequest.Dispose();
}
4.建立HTTPS POST連線,並使用FORM傳送資料
// 使用UnityWebRequest向httpbin.org發送FormData (async Task版本)
private async Task PostFormDataAsync(IValidatedWebRequest validatedRequest)
{
string url = "https://httpbin.org/post";
Debug.Log("開始POST Form請求: " + url);
// 創建表單資料
WWWForm formData = new WWWForm();
formData.AddField("username", "TestUser");
formData.AddField("email", "test@example.com");
formData.AddField("message", "Hello from CHTLand App using form data!");
// 使用ValidatedWebRequest獲取UnityWebRequest物件
UnityWebRequest webRequest = validatedRequest.Post(url, formData);
if (webRequest == null)
{
Debug.LogError("無法創建Post Form請求,URL可能不在允許的域名清單中或使用了非HTTPS協議");
return;
}
// 發送請求
var operation = webRequest.SendWebRequest();
// 等待請求完成
while (!operation.isDone)
{
await Task.Yield();
}
// 檢查是否有錯誤
if (webRequest.result != UnityWebRequest.Result.Success)
{
Debug.LogError("POST Form請求錯誤: " + webRequest.error);
}
else
{
// 獲取並打印JSON響應
string jsonResult = webRequest.downloadHandler.text;
Debug.Log("POST Form請求成功! 收到的JSON響應:");
Debug.Log(jsonResult);
}
// 釋放資源
webRequest.Dispose();
}