WWW 资源下载与表单提交
在注册与验证用户信息,以及非即时通信的游戏中,我们可以使用WWW类使用短链接来完成客户端与服务器数据的通信,今天我们将使用用POST方法来完成的用户注册与登录,在最后介绍下其它资源的加载。
首先使用POST完成注册:
场景中两个InputField用于输入名字与密码,一个Button提交注册。
Button绑定方法如下:
using UnityEngine;
using System.Collections;
using UnityEngine.UI; public class RegisterAndLogin : MonoBehaviour
{
private string registerURL;
private InputField _name;
private InputField _pwd; void Awake()
{
_name = GameObject.Find("Name").GetComponent<InputField>();
_pwd = GameObject.Find("Pwd").GetComponent<InputField>();
registerURL = "http://..../wwwRegister.php";
} public void OnClickRegister ()
{
//定义WWWForm类用于存放POST的字段
WWWForm registerForm = new WWWForm();
//添加对应字段到表单,注意KEY要与服务器上一致
registerForm.AddField("name", _name.text);
registerForm.AddField("password", _pwd.text);
//协程开始注册
StartCoroutine(RegisterFun(registerURL, registerForm));
} IEnumerator RegisterFun(string url, WWWForm form)
{
WWW regi_www = new WWW(url, form);
yield return regi_www;
//得到服务器返回信息
string callBack = regi_www.text.Trim();
//服务器返回 “1”,注册成功
if (callBack.Equals(""))
{
Debug.Log("congratulations! register OK! (call back code:" + callBack + ")");
}
//否则失败
else
{
Debug.Log("register failed! (call back code:" + callBack + ")");
}
}
}
运行场景,可以看到注册成功如下:
重复注册导致失败:
数据库中已经有数据咯:
登录和注意相似,只是需要在服务器上加以判断,并返回信息就行,这里就不写了。
再使用读取个纹理图片的:
void Start()
{
string urlTexture = "https://www.baidu.com/img/bd_logo1.png";
StartCoroutine (LoadTexture(urlTexture));
} //加载一张图片纹理
IEnumerator LoadTexture(string url)
{
WWW www = new WWW (url);
yield return www;
this.renderer.material.mainTexture = www.texture;
}
最后用GET来个读个JSON吧:
服务器上根据请求查询数据后格式化如下:
[{“id”:”1″,”name”:”\u5f6c\u5f6c”,”sex”:”\u5973″,”age”:”19″},
{“id”:”2″,”name”:”\u8d85\u8d85″,”sex”:”\u7537″,”age”:”24″},
{“id”:”8″,”name”:”\u5a01\u5a01″,”sex”:”\u7537″,”age”:”20″}]
脚本代码:
using UnityEngine;
using System.Collections;
using LitJson; public class wwwScript : MonoBehaviour
{
//JSON模板类
public class Person
{
public string id ;
public string name;
public string sex;
public string age;
} void Start ()
{
//通过“?+键值对”指定请求内容
StartCoroutine (LoadText ("http://.../wwwGet.php?tablename=person"));
} IEnumerator LoadText(string url)
{
WWW www = new WWW (url);
yield return www;
Debug.Log ("loaded total data:" + www.text);
//Json处理
Person[] persons = JsonMapper.ToObject <Person[]> (www.text);
foreach (Person item in persons)
{
Debug.Log (item.id + item.name + item.age);
}
}
}
OK咯,相信通过上面的例子,大家一定可以举一反三,应付绝大部分WWW类数据提交与请求的问题了^_^
WWW 资源下载与表单提交的更多相关文章
- jQuery Form 表单提交插件----Form 简介,官方文档,官方下载地址
一.jQuery Form简介 jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Form有两个核心方法 -- ajaxF ...
- 由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载,但是ajax实现的文件下载并不能触发浏览器的下载文件弹出框,这里通过模拟表单提交实现同样的效果。
由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载(这样的话ajax可以传递不同的参数),但是ajax实现的文 ...
- 使用Jquery.form.js ajax表单提交插件弹出下载提示框
现象: 使用jquery的from做ajax表单提交的时候,后台处理完毕返回json字符串,此时浏览器提示下载一个json文件而不是在success里面继续解析该json对象. 具体的原因: 浏览器兼 ...
- 浏览器下载/导出文件 及jQuery表单提交
1 比如以下按钮, 用于导出文件,如EXCEL文件. <li> <button class="whiteBg btn2" onclick="doExp( ...
- 表单提交中get和post方式的区别
表单提交中get和post方式的区别有5点 1.get是从服务器上获取数据,post是向服务器传送数据. 2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一 ...
- jquery插件-表单提交插件-jQuery.Form
1.介绍 JQuery Form插件是一款强大的Ajax表单提交插件,可以简单方便的实现让我们的表单 由传统的提交方式转换成Ajax无刷新提交! 他提供了两个核心的方法ajaxForm以及ajaxSu ...
- jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用
一.jQuery Form的其他api 1. formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...
- 详解JavaScript中的Url编码/解码,表单提交中网址编码
本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数escape / unescape ...
- 20151223jquery学习笔记--Ajax表单提交
传统的表单提交, 需要多次跳转页面, 极大的消耗资源也缺乏良好的用户体验. 而这款form.js 表单的 Ajax 提交插件将解决这个问题.一. 核心方法官方网站: http://malsup.com ...
随机推荐
- js chart
如何在我们项目中利用开源的图表(js chart) 最近觉得应该把自己在技术上的一些心得记录在博客里面跟大家分享,一起讨论,一起成长! 这篇随笔主要为介绍chart在项目中的运用,因为在我们看到一 ...
- asp.net mvc4设置area里面使用相同的 Controller 名称并设置area里的页面为起始页
asp.net mvc4设置area里面使用相同的 Controller 名称并设置area里的页面为起始页 1.使用重名controller 在asp.net mvc2以后的版本里面,有了area( ...
- MacOSX中使用NSWindow创建背景透明的窗体
1.Windows 在window上创建异形窗体必须要使用WS_EX_LAYERED样式,再调用SetLayeredWindowAttributes设置透明度或者透明颜色属性.用updatelayer ...
- centos6.5 搭建nginx1.6.0 +gridfs +mongodb2.4..10环境
一) 缘由 因为公司业务需要,需要搭建图片服务器,需求很简单:读取+上传图片,当时第一考虑用nginx来作,但考虑到单纯用nginx来作,无法水平扩展和管理,一旦遇到海量图片,就无办法 扩展.所以考虑 ...
- MFC控件(9):network address control
这个控件的名字倒是取的不错,一看就知道是让你输入IP地址或host name的. 不过一打开看到那控件的样子就完全是个Edit control.不过该控件对应的类也确实是继承自类CEdit. 先拖个控 ...
- 移动收入超PC端 盛大文学战略转型初见成效
随着智能手机和平板电脑的普及,越来越多的互联网服务也开始向移动端拓展,除了传统的互联网服务如搜索.即时通信之外,网络文学这项新兴的互联网业务也没忽视对移动端的布局. 7月9日,中国最大的网络文学出版平 ...
- 通过NSURL获取网络标准时间
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- iOS 测试驱动开发
测试驱动开发是敏捷开发的一部分,它一般有“red-green- refactor”步骤 iOS测试驱动开发的工具 一. OCUnit 是Xcode自带的测试工具 其使用步骤分为 1 建立测试的Targ ...
- listView 分页加载数据
Android应用 开发中,采用ListView组件来展示数据是很常用的功能,当一个应用要展现很多的数据时,一般情况下都不会把所有的数据一次就展示出来,而是通过分页 的形式来展示数据,个人觉得这样会有 ...
- Kettle的应用——对mysql数据进行表输入与导出
Kettle的应用——对mysql数据进行表输入与导出 1. 下载好kettle解压包 网址:http://sourceforge.net/projects/pentaho/files/Data%20 ...