using System; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Collections.Generic; using ThinkingSDK.PC.Constant; using ThinkingSDK.PC.Utils; using System.IO; using UnityEngine.Networking; using System.Collections; using ThinkingSDK.PC.Config; namespace ThinkingSDK.PC.Request { /* * Enumerate the form of data reported by post, and the enumeration value represents json and form forms */ enum POST_TYPE { JSON, FORM }; public abstract class ThinkingSDKBaseRequest { private string mAppid; private string mURL; private string mData; public ThinkingSDKBaseRequest(string appId, string url, string data) { mAppid = appId; mURL = url; mData = data; } public ThinkingSDKBaseRequest(string appId, string url) { mAppid = appId; mURL = url; } public void SetData(string data) { this.mData = data; } public string APPID() { return mAppid; } public string URL() { return mURL; } public string Data() { return mData; } /** * initialization interface */ public static void GetConfig(string url,ResponseHandle responseHandle) { if (!ThinkingSDKUtil.IsValiadURL(url)) { if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("Invalid Url:\n" + url); } HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); var responseResult = new StreamReader(response.GetResponseStream()).ReadToEnd(); if (responseResult != null) { if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("Request URL:\n"+url); if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("Response:\n"+responseResult); } } public bool MyRemoteCertificateValidationCallback(System.Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { bool isOk = true; // If there are errors in the certificate chain, // look at each error to determine the cause. if (sslPolicyErrors != SslPolicyErrors.None) { for (int i=0; i param, ResponseHandle responseHandle) { string uri = url + "?appid=" + appId; if (param != null) { uri = uri + "&data=" + ThinkingSDKJSON.Serialize(param); } using (UnityWebRequest webRequest = UnityWebRequest.Get(uri)) { webRequest.timeout = 30; webRequest.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("Request URL: \n" + uri); // Request and wait for the desired page. yield return webRequest.SendWebRequest(); Dictionary resultDict = null; #if UNITY_2020_1_OR_NEWER switch (webRequest.result) { case UnityWebRequest.Result.ConnectionError: case UnityWebRequest.Result.DataProcessingError: case UnityWebRequest.Result.ProtocolError: //if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("Error response: \n" + webRequest.error); break; case UnityWebRequest.Result.Success: string resultText = webRequest.downloadHandler.text; //if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("Response: \n" + resultText); if (!string.IsNullOrEmpty(resultText)) { resultDict = ThinkingSDKJSON.Deserialize(resultText); } break; } #else if (webRequest.isHttpError || webRequest.isNetworkError) { //if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("Error response: \n" + webRequest.error); } else { string resultText = webRequest.downloadHandler.text; //if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("Response: \n" + resultText); if (!string.IsNullOrEmpty(resultText)) { resultDict = ThinkingSDKJSON.Deserialize(resultText); } } #endif if (responseHandle != null) { responseHandle(resultDict); } } } } }