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 System.Text; using System.IO.Compression; using System.Runtime.Serialization; using UnityEngine.Networking; using System.Collections; namespace ThinkingSDK.PC.Request { /* * 枚举post上报数据的形式,枚举值表示json和form表单 */ enum POST_TYPE { JSON, FORM }; public abstract class ThinkingSDKBaseRequest { private string mAppid; private string mURL; private IList> mData; public ThinkingSDKBaseRequest(string appid, string url, IList> data) { mAppid = appid; mURL = url; mData = data; } public ThinkingSDKBaseRequest(string appid, string url) { mAppid = appid; mURL = url; } public void SetData(IList> data) { this.mData = data; } public string APPID() { return mAppid; } public string URL() { return mURL; } public IList> Data() { return mData; } /** * 初始化接口 */ public static void GetConfig(string url,ResponseHandle responseHandle) { if (!ThinkingSDKUtil.IsValiadURL(url)) { ThinkingSDKLogger.Print("invalid 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) { ThinkingSDKLogger.Print("Request URL="+url); ThinkingSDKLogger.Print("Response:="+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> data); //public static void postWithFORM(string url, string appid, Dictionary param, ResponseHandle responseHandle) //{ // HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); // request.Method = "POST"; // request.ContentType = "application/x-www-form-urlencoded"; // request.ReadWriteTimeout = 30 * 1000; // request.Timeout = 30 * 1000; // var postData = "appid=" + appid + "&source=server&dryRun=" + 0 + "&data=" + ThinkingSDKJSON.Serialize(param); // ThinkingSDKLogger.Print(postData); // byte[] data = Encoding.UTF8.GetBytes(postData); // request.ContentLength = data.Length; // using (Stream stream = request.GetRequestStream()) // { // stream.Write(data, 0, data.Length); // stream.Close(); // } // HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // var responseResult = new StreamReader(response.GetResponseStream()).ReadToEnd(); // if (responseResult != null) // { // ThinkingSDKLogger.Print("Request URL=" + url); // ThinkingSDKLogger.Print("Response:=" + responseResult); // } //} // public static void GetWithFORM(string url, string appid, Dictionary param, ResponseHandle responseHandle, MonoBehaviour mono) // { // HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?appid=" + appid + "&data=" + ThinkingSDKJSON.Serialize(param)); // request.Method = "GET"; // request.ContentType = "application/x-www-form-urlencoded"; // request.ReadWriteTimeout = 30 * 1000; // request.Timeout = 30 * 1000; // HttpWebResponse response = null; // Stream responseStream = null; // Dictionary resultDict = new Dictionary(); // try // { // response = (HttpWebResponse)request.GetResponse(); // responseStream = response.GetResponseStream(); // var responseResult = new StreamReader(responseStream).ReadToEnd(); // if (responseResult != null) // { // ThinkingSDKLogger.Print("Request URL=" + url); // ThinkingSDKLogger.Print("Response:=" + responseResult); // resultDict = ThinkingSDKJSON.Deserialize(responseResult); // } // } // catch (WebException ex) // { // ThinkingSDKLogger.Print("server response :" + ex.Message); // } // finally // { // if (responseStream != null) // { // responseStream.Close(); // } // if (response != null) // { // response.Close(); // } // if (request != null) // { // request.Abort(); // } // if (responseHandle != null) // { // responseHandle(resultDict); // } // } // } public static IEnumerator GetWithFORM_2(string url, string appid, Dictionary param, ResponseHandle responseHandle) { string uri = url + "?appid=" + appid + "&data=" + ThinkingSDKJSON.Serialize(param); using (UnityWebRequest webRequest = UnityWebRequest.Get(uri)) { webRequest.timeout = 30; webRequest.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ThinkingSDKLogger.Print("Request URL=" + uri); // Request and wait for the desired page. yield return webRequest.SendWebRequest(); Dictionary resultDict = new Dictionary(); #if UNITY_2020_1_OR_NEWER switch (webRequest.result) { case UnityWebRequest.Result.ConnectionError: case UnityWebRequest.Result.DataProcessingError: case UnityWebRequest.Result.ProtocolError: ThinkingSDKLogger.Print("Error response : " + webRequest.error); break; case UnityWebRequest.Result.Success: ThinkingSDKLogger.Print("Response : " + webRequest.downloadHandler.text); resultDict = ThinkingSDKJSON.Deserialize(webRequest.downloadHandler.text); break; } #else if (webRequest.isHttpError || webRequest.isNetworkError) { ThinkingSDKLogger.Print("Error response : " + webRequest.error); } else { ThinkingSDKLogger.Print("Response : " + webRequest.downloadHandler.text); resultDict = ThinkingSDKJSON.Deserialize(webRequest.downloadHandler.text); } #endif if (responseHandle != null) { responseHandle(resultDict); } } } } }