using LitJson; using SC.XR.Unity; using System.Collections; using System.Collections.Generic; using System.Text; using UnityEngine; using UnityEngine.Networking; public class HttpsSendLog : MonoBehaviour { private static HttpsSendLog instance; public static HttpsSendLog Instance { get { return instance; } } private HttpsSendLog() { } private Queue qSendLog; private float times; Dictionary requestHeader = new Dictionary(); // header void Awake() { instance = GetComponent(); //http header 的内容 requestHeader.Add("Content-Type", "application/json"); } private void Start() { qSendLog = new Queue(); times = 0; // SendLog("Error", "ceshi 11111111111"); } public void SendLog(string tag,string message) { SendHttpsWriteLog sendHLog = new SendHttpsWriteLog(); sendHLog.level = tag; sendHLog.tag = Application.productName; sendHLog.message = message; string json = JsonMapper.ToJson(sendHLog); qSendLog.Enqueue(json); } private void Update() { times += Time.deltaTime; if(times>1&&qSendLog.Count>0) { PostTest("", qSendLog.Dequeue()); } } public void PostTest(string methodName, string jsonString) { StartCoroutine(PostRequestTest(methodName, jsonString)); } private IEnumerator PostRequestTest(string methodName, string jsonString) { string url = "https://fat2.qulivr.com/mr-navigator/v1/unity/log"; Debug.Log(url + jsonString); using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST")) { byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonString); webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw); webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); foreach (var v in requestHeader) { webRequest.SetRequestHeader(v.Key, v.Value); } yield return webRequest.SendWebRequest(); if (webRequest.error!=null) { Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text + "\n" + methodName); //GameManager.Instance.text2.text = webRequest.error; } else { Debug.Log(webRequest.downloadHandler.text); } } } } public class SendHttpsWriteLog { public string level { get; set; } public string tag { get; set; } public string message { get; set; } }