usingLitJson;usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Net;usingSystem.Net.Http;usingSystem.Text;usingUnityEngine;usingUnityEngine.Networking;usingUnityEngine.UI;//请求连接//数据类型
public classConserver
{public int recordType; //类型
public string studentIdx; //学号
public string courseName; //课程名称
public string taskName; //任务名称
public int loginTimes; //登录次数
public int onlineDur; //在线时长
public byte finishRate; //学习完成率
public byte score; //分数
public Conserver(int recordType, string studentIdx,string courseName,string taskName,int loginTimes, intonlineDur,byte finishRate, bytescore)
{this.recordType =recordType;this.studentIdx =studentIdx;this.courseName =courseName;this.taskName =taskName;this.loginTimes =loginTimes;this.onlineDur =onlineDur;this.finishRate =finishRate;this.score =score;
}
}//解析json类//定义的类型一定要跟接收到的数据类型保持一致,否则会一直出不来
public classmodelTest
{public intresult;publicData data;
}public classData
{publicExamsk[]exams;public int total; //个数
}public classExamsk
{public string className; //班级
public string courseName; //课程
public string endTime; //结束时间
public int id; //id
public string name; //考试名称
public string startTime; //开始时间
public int taskIndex; //任务id
}public classConnect_Server : MonoBehaviour
{public string idd; //保存的token值
publicInputField field_xuehao;publicInputField field_mima;publicInputField field_kecheng;publicButton btn_login;
[NonSerialized]public int type; //什么类型 0学习 1 训练 2 考试
[NonSerialized]public string ipp; //IP地址
public GameObject ipObject; //IP地址界面
publicInputField field_ip;publicButton btn_jinru;public staticConnect_Server instance;publicGameObject tanchaungObj;public List listkeceng = new List(); //课程
public List listname = new List(); //考核名称
public List listTaskIndex = new List(); //任务几
public static int numberTask; //任务个数
public intRW;public stringkechengmingcheng;//清空列表
public voidClear_List()
{
listkeceng.Clear();
listname.Clear();
listTaskIndex.Clear();
}public voidBaoCunIpp()
{
PlayerPrefs.SetString("IPIP", field_ip.text);
}private voidAwake()
{
instance= this;if (PlayerPrefs.GetString("IPIP")!=null)
{
field_ip.text= PlayerPrefs.GetString("IPIP");
}else{
}
}private voidStart()
{//登录按钮
btn_login.onClick.AddListener(delegate{if (field_xuehao.text !=""&& field_mima.text !="")
{
StartCoroutine(GetAccessToken(field_xuehao.text, field_mima.text));
}
});
btn_jinru.onClick.AddListener(delegate{if (field_ip.text !="")
{
ipp=field_ip.text;
ipObject.SetActive(false);
BaoCunIpp();
}
});
}//上传数据
public void Upload_Data(int type,string xuehao,string kecheng,string renwu,int cishu,byte wancenglv,bytesoce)
{
sendMessage(new Conserver(type, xuehao, kecheng, renwu, cishu, (int)Time.realtimeSinceStartup, wancenglv, soce));
}//上传学习完成率数据//调用 Connect_Server.instance.UpLoad_Dataxuexi();
public voidUpLoad_Dataxuexi()
{
Connect_Server.instance.Upload_Data(Connect_Server.instance.type, Connect_Server.instance.field_xuehao.text,
Connect_Server.instance.listkeceng[0], "考试", 1, 100, 0);
Connect_Server.instance.Clear_List();
}public voidUpdate()
{if(Input.GetKeyDown (KeyCode.Space ))
{//Connect_Server.instance.Get_BicAuth();//GetPage();
}
}//post 请求账号密码 获取token值 ,保存使用
IEnumerator GetAccessToken(string xuehao,stringmima)
{string url = "http://"+ipp+":8080/auth/login/student";//Debug.Log(url);
WWWForm form = newWWWForm();
form.AddField("studentIdx", xuehao);
form.AddField("password", mima);//string form = Convert.ToBase64String(Encoding.Default.GetBytes("20210101:123456"));
UnityWebRequest www =UnityWebRequest.Post(url, form);yield returnwww.SendWebRequest();if (www.isNetworkError ||www.isHttpError)
{
Debug.Log(www.error);
}else{//Debug.Log("Form upload complete!");
JsonData json =JsonMapper.ToObject(www.downloadHandler.text);
Debug.Log(www.downloadHandler.text);//获取服务器返回的数据 解析判断
if (json["result"].ToString()!="0")
{
field_xuehao.text= "";
field_mima.text= "";
field_kecheng.text= "";
tanchaungObj.SetActive(true);
}else{//Debug.Log(www.downloadHandler.text);//idd就是解析出来的token值
idd = json["data"]["token"].ToString();//Debug.Log(idd);
GameManager.instance.login_obj.SetActive(false);
}
}
}public voidGuanBITanChuang()
{
tanchaungObj.SetActive(false);
}//直接get请求
public voidGet_BicAuth()
{string url = "http://"+ipp+":8080/exam?page=1&limit=10";using (var httpClient = newHttpClient())
{var response =httpClient.GetAsync(url).Result;var data =response.Content.ReadAsStringAsync().Result;
Debug.Log(data);
}
}//GET请求服务器 带Bearer认证 还有token令牌
public voidGetPage()
{
HttpWebRequest request= null;string requestUrl = "http://" + ipp + ":8080/exam?page=1&limit=10";//准备请求...
try{//设置参数
CookieContainer objCookieContainer = null;
request=(HttpWebRequest)WebRequest.Create(requestUrl);
CookieContainer cookieContainer= newCookieContainer();
request.CookieContainer=cookieContainer;
request.AllowAutoRedirect= true;
request.Method= "GET"; //请求方式GET或POST//数据格式是JSON
request.ContentType = "application/json";//认证方式 bearer idd 是令牌 token值
request.Headers.Add("Authorization", "Bearer" +idd);string strResponse = "";using (HttpWebResponse res =(HttpWebResponse)request.GetResponse())
{
objCookieContainer=request.CookieContainer;using (Stream resStream =res.GetResponseStream())
{using (StreamReader srs = new StreamReader(resStream, Encoding.UTF8))//.UTF8))
{
strResponse=srs.ReadToEnd();
Debug.Log(strResponse);
modelTest obj= JsonMapper.ToObject(strResponse);
numberTask=obj.data.total;for (int i = 0; i < obj.data.total; i++)
{//保存从服务器获取的数据,等会显现出来
listname.Add(obj.data.exams[i].name.ToString());
listkeceng.Add(obj.data.exams[i].courseName.ToString());
listTaskIndex.Add(obj.data.exams[i].taskIndex);
}
}
}
}
}catch(Exception e)
{
Debug.Log(e);
}
}//带HTTP安全协议 Bearer验证的post请求方法 上传数据
public stringsendMessage( Conserver student)
{string strUrl = "http://"+ipp+":8080/record";try{
CookieContainer objCookieContainer= null;
HttpWebRequest request=(HttpWebRequest)WebRequest.Create(strUrl);
request.Method= "Post";
request.ContentType= "application/json";//设置Http Bearer认证的请求头
request.Headers.Add("Authorization", "Bearer" +idd);
request.Referer=strUrl;
Debug.Log(strUrl);if (objCookieContainer == null)
objCookieContainer= newCookieContainer();
request.CookieContainer=objCookieContainer;
Debug.Log(objCookieContainer.ToString());//传输参数格式转换
var data =JsonUtility.ToJson(student);//request.ContentLength = Encoding.UTF8.GetByteCount(data);
byte[] byteData =Encoding.UTF8.GetBytes(data);
request.ContentLength=byteData.Length;using (Stream reqStream =request.GetRequestStream())
{
reqStream.Write(byteData,0, byteData.Length);//reqStream.Close();
}string strResponse = "";using (HttpWebResponse res =(HttpWebResponse)request.GetResponse())
{
objCookieContainer=request.CookieContainer;using (Stream resStream =res.GetResponseStream())
{using (StreamReader sr = new StreamReader(resStream, Encoding.UTF8))//.UTF8))
{
strResponse=sr.ReadToEnd();
Debug.Log(strResponse);
}
}//res.Close();
}returnstrResponse;
}catch(Exception e)
{
Debug.Log(e);
}return null;
}
}