在注册与验证用户信息,以及非即时通信的游戏中,我们可以使用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 资源下载与表单提交的更多相关文章

  1. jQuery Form 表单提交插件----Form 简介,官方文档,官方下载地址

     一.jQuery Form简介 jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Form有两个核心方法 -- ajaxF ...

  2. 由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载,但是ajax实现的文件下载并不能触发浏览器的下载文件弹出框,这里通过模拟表单提交实现同样的效果。

    由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载(这样的话ajax可以传递不同的参数),但是ajax实现的文 ...

  3. 使用Jquery.form.js ajax表单提交插件弹出下载提示框

    现象: 使用jquery的from做ajax表单提交的时候,后台处理完毕返回json字符串,此时浏览器提示下载一个json文件而不是在success里面继续解析该json对象. 具体的原因: 浏览器兼 ...

  4. 浏览器下载/导出文件 及jQuery表单提交

    1 比如以下按钮, 用于导出文件,如EXCEL文件. <li> <button class="whiteBg btn2" onclick="doExp( ...

  5. 表单提交中get和post方式的区别

    表单提交中get和post方式的区别有5点 1.get是从服务器上获取数据,post是向服务器传送数据. 2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一 ...

  6. jquery插件-表单提交插件-jQuery.Form

    1.介绍 JQuery Form插件是一款强大的Ajax表单提交插件,可以简单方便的实现让我们的表单 由传统的提交方式转换成Ajax无刷新提交! 他提供了两个核心的方法ajaxForm以及ajaxSu ...

  7. jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用

    一.jQuery Form的其他api  1.  formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...

  8. 详解JavaScript中的Url编码/解码,表单提交中网址编码

    本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数escape / unescape ...

  9. 20151223jquery学习笔记--Ajax表单提交

    传统的表单提交, 需要多次跳转页面, 极大的消耗资源也缺乏良好的用户体验. 而这款form.js 表单的 Ajax 提交插件将解决这个问题.一. 核心方法官方网站: http://malsup.com ...

随机推荐

  1. 《12个有趣的C语言问答》(4)

    C语言面试问答——<12个有趣的C语言问答>评析(4) 前文链接:http://www.cnblogs.com/pmer/p/3324063.html 8,Making changes i ...

  2. OSGI原形(.NET)

    OSGI原形(.NET) 目前只做了基础的功能,比如: 各个模块单独的AppDomain容器 Activator激活 导出的服务检查 不过,虽说这样,但目前的这个版本已经能实现模块分离.互相依赖调用等 ...

  3. java中的volatile关键字

    java中的volatile关键字 一个变量被声明为volatile类型,表示这个变量可能随时被其他线程改变,所以不能把它cache到线程内存(如寄存器)中. 一般情况下volatile不能代替syn ...

  4. Scut游戏服务器免费开源框架-3

    Scut游戏服务器免费开源框架--快速开发(3) Scut快速开发(3) 1        开发环境 需要安装的软件 a)        消息队列 b)        数据库,Sql2005以上版本 ...

  5. asp.net做的网站账号登陆后注销不管用了

    最近做了个项目用到了数据库登录,A登陆后把登录状态保,个人信息存在Session里,但是奇怪的是,只要有一个用户登录后在其他电脑上打开上述页面,则也显示A登录状态,注销也不管用了.以前还号的.求大神啊 ...

  6. 批处理清理VS工程目录(递归删除Debug, Release, ipch目录及*.sdf文件)

    用VS写程序最烦的就是VS会产生一大堆乱七八糟的东西,如Degub, Release, ipch目录,还有sdf文件,这些东西占了很大的空间,在linux下编程的话一个make clean就可以很方便 ...

  7. 使用IDEA开发

    IDEA 在使用IDEA之前,我是eclipse的忠实用户.无论是最初学习java,还是后来用python/golang. eclipse丰富的插件已经满足了我大部分的使用,直到在师弟的大力推荐下使用 ...

  8. Java的Exception和Error面试题10问10答

    在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...

  9. <meta>标签的作用

    <META> 是放于 <HEAD> 与 </HEAD>之间的标记,功用与变化等对,所以我公式化地介绍. <meta name="Descriptio ...

  10. 使用Freemarker创建word文档

    最近做一个项目,本来是直接在网页上查看文本信息,然后给客户直接打印的,但是发现也许是浏览器还是打印机的原因,总之,有个客户打印出来的格式始终与其他的不同,没办法,最后想到了直接将数据库中的信息生成一个 ...