商丘做网站用什么程序,网站建设的误区,广东省建设交易中心网站首页,网站开发网站设计素材Unity程序向Web服务器发送数据 一、介绍二、HTTP协议三、新建Unity工程#xff0c;创建脚本1.新建Unity工程#xff0c;创建脚本WebManager.cs#xff0c;将其指定给场景中的任意游戏体。2.在WebManager.cs中添加一个m_info属性和OnGUI函数显示UI#xff1a; 四、GET请求在… Unity程序向Web服务器发送数据 一、介绍二、HTTP协议三、新建Unity工程创建脚本1.新建Unity工程创建脚本WebManager.cs将其指定给场景中的任意游戏体。2.在WebManager.cs中添加一个m_info属性和OnGUI函数显示UI 四、GET请求在WebManager.cs脚本中添加一个IGetData函数注意函数的返回类型是在OnGUI函数中添加代码执行IGetData函数接下来我们要创建一个PHP脚本响应WWW的GET请求。新建PHP工程在Web服务器根目录创建index.php测试如下 五、POST请求在WebManager.cs脚本中添加一个IPostData函数在OnGUI函数中添加代码执行IPostData函数修改PHP脚本添加POST请求的响应测试如下 一、介绍
本文将演示一个简单的实例从Unity程序向Web服务器发送数据Web服务器收到数据后向Unity程序再返回数据。不附带HTTP架构设计需要自行动脑设计。
二、HTTP协议
Unity的WWW是基于HTTP协议的网络传输功能HTTPhypertext transport protocol协议即超文本协议它规定了万维网数据通信的规则它是客户端、服务器模式客户端和服务器都必须支持HTTP。HTTP协议的一个重要特点是每次连接只处理一个请求当服务器处理完客户端的请求即断开连接节省传输时间。 使用HTTP协议传输数据有多种方式Unity的WWW主要支持其中的GET和POST方式。GET方式会将请求附加在URL后POST方式则是通过FORM表单的形式提交。GET方式最多只能传输1024个字节POST方式理论上则没有限制。从安全角度来看POST比GET方式安全性更高所以在实际使用中更多选择POST方式。 下面我们先创建一个简单的UI界面提供两个按钮分别用于使用GET和POST方式向服务器提交数据。这里有不会搭建HTTP服务器的可以看我之前的文章Php与Apache环境配置
三、新建Unity工程创建脚本
1.新建Unity工程创建脚本WebManager.cs将其指定给场景中的任意游戏体。
2.在WebManager.cs中添加一个m_info属性和OnGUI函数显示UI
string m_info Nothing;private void OnGUI(){GUI.BeginGroup(new Rect(Screen.width * 0.5f - 100,Screen.height * 0.5f -100,500,200),);GUI.Label(new Rect(10,10,400,30),m_info);if (GUI.Button(new Rect (10,50,150,30),GetData)){}if (GUI.Button(new Rect(10,100,150,30),Post Data)){}GUI.EndGroup();}运行程序在窗口中会出现两个按钮并显示“Nothing”如图所示。我们将使用Get Data和Post Data按钮分别通过GET 和 POST方式向Web服务器发送数据然后服务器返回数据传递给m_info属性显示在屏幕上。
四、GET请求
接下来我们使用GET方式向服务器提交数据包括一个用户名和一个密码服务器收到后返回一个字符串。
在WebManager.cs脚本中添加一个IGetData函数注意函数的返回类型是
IEnumerator IGetData(){WWW www new WWW(http://47.101.204.7:8088/index.php?usernamegetpassword123456);yield return www;if (www.error ! null){m_info www.error;yield return null;}m_info www.text;}这个函数中我们首先创建了一个WWW实例使其向指定的IP地址发送GET请求跟随在IP地址后面的用于附加数据这里我们发送了两个GET数据一个是username另一个是password它们的值分别是get和12345。
WWW实例将在后台运行yield return www会等待Web服务器的反映。 如果WWW实例的error属性不为空Web服务器返回的数据则会保存在WWW实例的text属性中。
在OnGUI函数中添加代码执行IGetData函数
if (GUI.Button(new Rect (10,50,150,30),GetData)){StartCoroutine(IGetData());}接下来我们要创建一个PHP脚本响应WWW的GET请求。新建PHP工程在Web服务器根目录创建index.php
?php
if ( isset($_GET[username]) isset($_GET[password]) )echo username is .$_GET[username]. and password is .$_GET[password];
elseecho error!;
?这是一段PHP代码isset函数用来判断是否收到相应的GET请求如果收到了则使用echo函数输出结果并将其返回到Unity程序中。在PHP中连接两个字符串是使用.而不是
测试如下
在Unity中运行程序按一下Get Data按钮然后会收到服务器返回的值结果如下所示
五、POST请求
使用POST提交数据的方式与GET类似但我们将会把字符串转为byte数组。
在WebManager.cs脚本中添加一个IPostData函数
IEnumerator IPostData(){Dictionarystring,string headers new Dictionarystring, string();headers.Add(Content_Type,application/x-www-form-urlencoded);string data usernamepostpassword6789;byte[] bs System.Text.UTF8Encoding.UTF8.GetBytes(data);WWW www new WWW(http://47.101.204.7:8088/index.php,bs,headers);yield return www;if (www.error ! null){m_info www.error;yield return null;}m_info www.text;}与GET不同的是在保存数据的字符串中最前面没有符号但仍使用符号连接数据最后我们将字符串转为一个byte数组。headers在以前版本是一个HashTable现在都改为了Dictionary它由键、值对应这里我们用它来保存HTTP包头。
在OnGUI函数中添加代码执行IPostData函数
if (GUI.Button(new Rect(10,100,150,30),Post Data)){StartCoroutine(IPostData());}
修改PHP脚本添加POST请求的响应
?php
if ( isset($_GET[username]) isset($_GET[password]) )echo username is .$_GET[username]. and password is .$_GET[password];
else if ( isset($_POST[username]) isset($_POST[password]) )echo username is .$_POST[username]. and password is .$_POST[password];
elseecho error!;
?测试如下
在Unity中运行程序按一下Post Data按钮然后会收到服务器返回的数据