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

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Myeclipse 操作数据库

步骤1&#xff1a;通过MyEclipse中的window-》show View-》other 调出。DB浏览器&#xff0c;和 SQL Results 步骤2. 可以右键单击空白处&#xff0c;选择new&#xff0c;创建一个新的DB connection&#xff0c; 或者edit已经存在的DB connection 步骤3&#xff1a;数据库信息填…

媒体服务器协议,媒体服务器介绍(mediactrl架构)

5.1.1MediaCtrl媒体控制草案MediaCtrl是IETF下专门研究和制定媒体服务器控制标准的小组&#xff0c;以SIP和XML为所制定标准的基础。这个工作组的工作包括&#xff1a;定义媒体服务器控制的技术需求说明、框架、控制协议簇和定位/连接协议。5.1.1.1技术需求描述这个技术需求描述…

蓝桥杯 历届试题 带分数

历届试题 带分数 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述 100 可以表示为带分数的形式&#xff1a;100 3 69258 / 714。还可以表示为&#xff1a;100 82 3546 / 197。注意特征&#xff1a;带分数中&#xff0c;数字1~9分别出现且只出现一次&…

蓝桥杯 历届试题 剪格子

历届试题 剪格子 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述 如下图所示&#xff0c;3 x 3 的格子中填写了一些整数。--*---- |10* 1|52| --****-- |20|30* 1| *******-- | 1| 2| 3| ------ 我们沿着图中的星号线剪开&#xff0c;得到两个部分&#xf…

蓝桥杯 历届试题 危险系数

历届试题 危险系数 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述 抗日战争时期&#xff0c;冀中平原的地道战曾发挥重要作用。地道的多个站点间有通道连接&#xff0c;形成了庞大的网络。但也有隐患&#xff0c;当敌人发现了某个站点后&#xff0c;其它站…

android target unknown and state offline解决办法

没有错&#xff0c;将adb的版本升级一下就好了&#xff01; 下载地址为&#xff1a;http://files.cnblogs.com/files/hujunzheng/adb1.0.32.zip 转载于:https://www.cnblogs.com/hujunzheng/p/4360436.html

Spring3 整合 Hibernate4实现数据库操作(1)

Hibernate知识学习&#xff1a;http://justsee.iteye.com/blog/1061576 注意Hibernate4在开发当中的一些改变 &#xff1a;http://snake-hand.iteye.com/blog/1995592 //首先在web.xml中加入OpenSessionInViewFilter过滤器 <filter> <filter-name>openSessionInV…

s2sh框架搭建(辅助工具:MyEclipse)及解决一些遇到的问题

1.新建一个web project 2.首先生成Hibernate Facet 3.Hibernate Facet 安装步骤 4.然后是spring facet安装步骤 5.最后是struts facet 的配置 6.最后的整体布局如下所示 7.在服务器上运行&#xff0c;发现如下错误&#xff1a; 严重: Exception sending context initialized ev…

520爱心表白——C语言入门

520爱心表白——C语言入门 关于爱心表白的代码&#xff0c;网上有很多非常好看而且可以实现颜色变换和立体&#xff0c;动态等效果的代码。但是我入门不久&#xff0c;能力有限。520重要的可能还是在心意我觉得&#xff0c;所以自己写了一个非常简单毫无技术含量爱心代码来表达…

MyEclipse在搭建s2sh时 如何 uninstalled facet

在资源管理器中&#xff1a;找到当前【项目的根目录】&#xff0c;在【.setting】目录中&#xff0c; 找到【org.eclipse.wst.common.project.facet.core.xml】文件。 用【文本编辑器工具】打开&#xff0c;找到&#xff1a; <installed facet"me.hibernate" vers…

s2sh框架搭建(基于spring aop)

对于spring aop 是如何管理事务的&#xff0c;请看一下&#xff1a;http://bbs.csdn.net/topics/290021423 1.applicationContext.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&q…

codeforces B. Pasha and String(贪心)

题意&#xff1a;给定一个长度为len的字符序列&#xff0c;然后是n个整数&#xff0c;对于每一个整数ai&#xff0c; 将字符序列区间为[ai,len-ai1]进行反转。求出经过n次反转之后的序列&#xff01; 1 /*2 思路1&#xff1a;将区间为偶数次的直接去掉&#xff01;对剩下的…

java简单词法分析器(源码下载)

java简单词法分析器 : http://files.cnblogs.com/files/hujunzheng/%E7%AE%80%E5%8D%95%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90%E5%99%A8.zip 转载于:https://www.cnblogs.com/hujunzheng/p/4383880.html

java 模拟qq源码

java 模拟qq源码&#xff1a; http://files.cnblogs.com/files/hujunzheng/QQ--hjzgg.zip 转载于:https://www.cnblogs.com/hujunzheng/p/4390307.html

蓝桥杯 算法提高 日期计算

算法提高 日期计算 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述已知2011年11月11日是星期五&#xff0c;问YYYY年MM月DD日是星期几&#xff1f;注意考虑闰年的情况。尤其是逢百年不闰&#xff0c;逢400年闰的情况。 输入格式输入只有一行YYYY MM DD 输出…

java JFileChooser选择文件和保存文件

//文件过滤器import java.io.File;import javax.swing.filechooser.FileFilter;public class MyFilter extends FileFilter{private String[] filterString null;public MyFilter(String[] filStrings){this.filterString filStrings;}public boolean accept(File file){if(f…

指针详解

c语言相比其他高级语言来说,更接近于对计算机硬件的操作,而指针的应用更是为我们对硬件的操作插上了翅膀,所以指针是嵌入式编程不可少的一部分,在一定意义上说,指针是c语言的精髓。 欢迎加入嵌入式学习群:559601187 一、 什么是指针 在计算机中,数据时存放在内存中的,…

反质数问题,求不大于n的最大反质数

反质数&#xff1a;设f(n)表示n个约数的个数&#xff0c;如果对于任意x有0<x<n, f(x) < f(n),那么n就是一个反质数我们都知道对于任意一个数n&#xff0c;都可以用质数乘积的形式表示出来&#xff1a;x p1^k1p2^k2...pn^kn一个数n如果可以表示成 n p1^k1 p2^k2, 那…

c语言之结构

今天来说一下C语言里的结构体(struct)、共用体(l联合体)union、枚举。 欢迎加入嵌入式学习群&#xff1a;559601187 &#xff08;一&#xff09;结构体&#xff1a;struct 1.1 概念 是一种自定义的数据类型结构体是构造类型的一种不同数据类型的集合地址空间连续&#xff0c;…

猫和老鼠 蓝桥杯/手速/暴力练习赛(暴力搜索)

猫和老鼠 蓝桥杯&#xff0f;手速&#xff0f;暴力练习赛 【题目描述】猫和老鼠在10*10 的方格中运动&#xff0c;例如&#xff1a;*...*...........*......*...*...............*.C....*.....*......*........M......*...*.*.....*.*......C猫&#xff08;CAT&#xff09;M老鼠…