网页信息上传服务器,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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值