网页信息上传服务器,Unity 连接网页服务器 获取数据上传数据
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;
}
}
總結
以上是生活随笔為你收集整理的网页信息上传服务器,Unity 连接网页服务器 获取数据上传数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斯巴鲁森林人在不同地形下的性能表现如何?
- 下一篇: 空气炸锅吸油纸能包肉类冷冻吗?