1
0
MirzkisD1Ex0 11 сар өмнө
parent
commit
96b26b5226

+ 74 - 0
Materials/Backend & Upload/JsonUploader.cs

@@ -0,0 +1,74 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Networking;
+using Newtonsoft.Json;
+using System.Text;
+using System;
+
+public class JsonUploader.cs : BaseSceneManager<JsonUploader>
+{
+  private const string authURL = @"http://192.168.10.211:4050/auth/student";
+
+  // ==================================================
+
+  public void Auth(string value) => StartCoroutine(AuthAction(value));
+  private IEnumerator AuthAction(string value)
+  {
+    AuthData authData = new AuthData();
+    authData.internalId = value;
+    string json = JsonConvert.SerializeObject(authData);
+
+    // 上传json的方法
+    // 上传bytes否则jsonbody会被误作为head
+    using (UnityWebRequest www = new UnityWebRequest(authURL, UnityWebRequest.kHttpVerbPOST))
+    {
+      www.SetRequestHeader("Content-Type", "application/json");
+      www.SetRequestHeader("Accept", "application/json");
+
+      byte[] bytes = Encoding.UTF8.GetBytes(json);
+      www.uploadHandler = new UploadHandlerRaw(bytes);
+
+      DownloadHandler downloadHandler = new DownloadHandlerBuffer();
+      www.downloadHandler = downloadHandler;
+
+      yield return www.SendWebRequest();
+
+      if (www.result != UnityWebRequest.Result.Success)
+      {
+        Debug.Log($"{www.error}...<color=red>[ER]</color>");
+        yield break;
+      }
+      else
+      {
+        Debug.Log(www.downloadHandler.text);
+        ResponAuthData responAuthData = JsonConvert.DeserializeObject<ResponAuthData>(www.downloadHandler.text.ToString());
+
+        if (responAuthData.code == 0)
+        {
+          PlayerManager.Instance.SetPlayerPrefsStudentID(value);
+        }
+        else
+        {
+
+        }
+
+      }
+    }
+    yield break;
+  }
+
+  // ==================================================
+
+  [Serializable]
+  public class AuthData
+  {
+    public string internalId;
+  }
+  [Serializable]
+  public class ResponAuthData
+  {
+    public int code;
+    public string data;
+  }
+}