转~Unity与注册登录服务器交互原理及code
来源:互联网 发布:c语言小写变大写 编辑:程序博客网 时间:2024/04/25 09:09
主要用到了unity内置的WWW类和WWWForm类,运用WWWForm.AddField(String fieldName, String value)方法通过post的表单提交方式把表单参数传递给服务器端的逻辑业务层。(我用的是JSP,在逻辑层上request.getParameter(fiedlName);就能得到AddField中传递的参数,接下来就是服务器的逻辑处理了。PHP貌似是$_POST[fieldName]吧,好久没写过php了,ASP.NET不着咋写...)
客户端的demo效果图:
imei是手机的唯一识别id,用imei表示可能不恰当...
客户端代码:
1 using UnityEngine; 2 using System.Collections; 3 using System.Text.RegularExpressions; 4 5 public class Client : MonoBehaviour 6 { 7 WWW www; 8 WWWForm form; 9 string url; 10 11 string username_label = "username:"; 12 string username_input = ""; 13 14 string password_label = "password:"; 15 string password_input = ""; 16 17 string password_label2 = "password2:"; 18 string password_input2 = ""; 19 20 string email_label = "email:"; 21 string email_input = ""; 22 23 string callback_label = "result:"; 24 string callback_label2 = ""; 25 26 void OnStart() 27 { 28 29 } 30 31 void OnGUI() 32 { 33 GUI.Label(new Rect(0, 0, 80, 20), username_label); 34 username_input = GUI.TextField(new Rect(80, 0, 100, 20), username_input); 35 36 GUI.Label(new Rect(0, 30, 80, 20), password_label); 37 password_input = GUI.TextField(new Rect(80, 30, 100, 20), password_input); 38 39 GUI.Label(new Rect(0, 60, 80, 20), password_label2); 40 password_input2 = GUI.TextField(new Rect(80, 60, 100, 20), password_input2); 41 42 GUI.Label(new Rect(0, 90, 80, 20), email_label); 43 email_input = GUI.TextField(new Rect(80, 90, 100, 20), email_input); 44 45 GUI.Label(new Rect(0, 160, 80, 20), callback_label); 46 callback_label2 = GUI.TextField(new Rect(50, 160, 160, 20), callback_label2); 47 48 if (GUI.Button(new Rect(0, 120, 100, 30), "Login")) 49 { 50 form = new WWWForm(); 51 form.AddField("name", username_input); 52 form.AddField("password", password_input); 53 string url = "http://192.168.100.98:8084/ddt/UserLogin.jsp"; 54 www = new WWW(url, form); 55 StartCoroutine(WaitForRequestUserNameLogin(www)); 56 } 57 58 if (GUI.Button(new Rect(120, 120, 100, 30), "Register")) 59 { 60 form = new WWWForm(); 61 //form.AddField("id", "phone_id_str"); 62 form.AddField("id", SystemInfo.deviceUniqueIdentifier); 63 form.AddField("name", username_input); 64 form.AddField("password", password_input); 65 form.AddField("retry_password", password_input2); 66 form.AddField("email", email_input); 67 url = "http://192.168.100.98:8084/ddt/registerUser.jsp"; 68 www = new WWW(url, form); 69 StartCoroutine(WaitForRequestRegister(www)); 70 } 71 72 if (GUI.Button(new Rect(240, 120, 100, 30), "non-reg to play")) 73 { 74 form = new WWWForm(); 75 form.AddField("id", SystemInfo.deviceUniqueIdentifier); 76 //form.AddField("name", username_input); 77 //form.AddField("password", password_input); 78 //form.AddField("retry_password", password_input2); 79 //form.AddField("email", email_input); 80 url = "http://192.168.100.98:8084/ddt/NonRegPlay.jsp"; 81 www = new WWW(url, form); 82 StartCoroutine(WaitForRequestPhoneIdLogin(www)); 83 } 84 85 if (GUI.Button(new Rect(200, 0, 130, 20), "Check UserName")) 86 { 87 form = new WWWForm(); 88 form.AddField("name", username_input); 89 Debug.Log("username_input...." + username_input); 90 url = "http://192.168.100.98:8084/ddt/CheckUserIsExist.jsp"; 91 www = new WWW(url, form); 92 StartCoroutine(WaitForRequestCheck(www)); 93 } 94 95 if (GUI.Button(new Rect(0, 200, 50, 30), "IMEI")) 96 { 97 callback_label2 = SystemInfo.deviceUniqueIdentifier; 98 } 99 100 }101 102 IEnumerator WaitForRequestUserNameLogin(WWW www)103 {104 yield return www;105 if (www.error != null)106 Debug.Log("fail to request..." + www.error);107 else108 {109 if (www.isDone)110 {111 string ex = @"<span>([\S\s\t]*?)</span>";112 Match m = Regex.Match(www.data, ex);113 if (m.Success)114 {115 string result = m.Value;116 result = result.Substring(result.IndexOf(">") + 1, result.LastIndexOf("<") - result.IndexOf(">") - 1).Trim();117 if (result == "success")118 {119 callback_label2 = "登录成功";120 }121 else if (result == "empty")122 {123 callback_label2 = "用户名或密码为空";124 }125 else if (result == "fail")126 {127 callback_label2 = "找不到指定用户";128 }129 else130 {131 callback_label2 = "未知错误";132 }133 }134 }135 }136 }137 138 IEnumerator WaitForRequestRegister(WWW www)139 {140 yield return www;141 if (www.error != null)142 Debug.Log("fail to request..." + www.error);143 else144 {145 if (www.isDone)146 {147 string ex = @"<span>([\S\s\t]*?)</span>";148 Match m = Regex.Match(www.data, ex);149 if (m.Success)150 {151 string result = m.Value;152 result = result.Substring(result.IndexOf(">") + 1, result.LastIndexOf("<") - result.IndexOf(">") - 1).Trim();153 if (result == "success")154 {155 callback_label2 = "注册成功";156 }157 else if (result == "empty")158 {159 callback_label2 = "用户名或密码为空";160 }161 else if (result == "equals")162 {163 callback_label2 = "两次输入密码不一致";164 }165 else if (result == "fail")166 {167 callback_label2 = "更新数据库失败";168 }169 else170 {171 callback_label2 = "未知错误";172 }173 }174 }175 }176 177 }178 179 IEnumerator WaitForRequestCheck(WWW www)180 {181 yield return www;182 if (www.error != null)183 Debug.Log("fail to request..." + www.error);184 else185 {186 if (www.isDone)187 {188 Debug.Log("data-->" + www.data);189 string ex = @"<span>([\S\s\t]*?)</span>";190 Match m = Regex.Match(www.data, ex);191 if (m.Success)192 {193 string result = m.Value;194 result = result.Substring(result.IndexOf(">") + 1, result.LastIndexOf("<") - result.IndexOf(">") - 1).Trim();195 if (result == "empty")196 {197 callback_label2 = "用户名为空";198 }199 else if (result == "nothing")200 {201 callback_label2 = "用户名不存在,可以注册";202 }203 else if (result == "exist")204 {205 callback_label2 = "用户名已存在";206 }207 else208 {209 callback_label2 = "未知错误";210 }211 }212 }213 }214 }215 216 IEnumerator WaitForRequestPhoneIdLogin(WWW www)217 {218 yield return www;219 if (www.error != null)220 Debug.Log("fail to request..." + www.error);221 else222 {223 if (www.isDone)224 {225 string ex = @"<span>([\S\s\t]*?)</span>";226 Match m = Regex.Match(www.data, ex);227 if (m.Success)228 {229 string result = m.Value;230 result = result.Substring(result.IndexOf(">") + 1, result.LastIndexOf("<") - result.IndexOf(">") - 1).Trim();231 if (result == "ok")232 {233 callback_label2 = "手机ID登录成功";234 }235 else if (result == "error")236 {237 callback_label2 = "手机ID登录成功";238 }239 else240 {241 callback_label2 = "未知错误";242 }243 }244 }245 }246 }247 248 249 }
服务器端注册逻辑:
1 <%@ page language="java" import="ddt.*" %> 2 <jsp:useBean id="user" scope="session" class="ddt.UserBean" /> 3 <%@page contentType="text/html" pageEncoding="UTF-8"%> 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 5 "http://www.w3.org/TR/html4/loose.dtd"> 6 <html> 7 <head> 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9 <title>JSP Page</title>10 </head>11 <body>12 <%13 String id = request.getParameter("id");14 String username = request.getParameter("name");15 String password = request.getParameter("password");16 String retry_password = request.getParameter("retry_password");17 String email = request.getParameter("email");18 user.processRegisterUserRequest(id, username, password, retry_password, email, request, response);19 %>20 </body>21 </html>
user.processRegisterUserRequest方法是注册就是处理了。登录等其他功能也是采用同样的业务处理流程,不再详述了。
- 转~Unity与注册登录服务器交互原理及code
- Unity与注册登录服务器交互原理及code
- Unity与注册登录服务器交互原理及code
- Unity与注册登录服务器交互原理及code
- SVN客户端界面完工+与服务器交互注册登录实现
- Android客户端与服务器交互,登录案例
- Android与J2EE交互之登录注册实现
- ajax如何与服务器交互,原理
- cordova与ios native code交互的原理
- cordova与ios native code交互的原理
- cordova与ios native code交互的原理
- unity 登录和注册账号
- Unity登录服务器及处理返回的json数据
- 第一个与服务器交互的登录程序(C#)
- andriod客户端与php服务器交互登录界面
- unity与android交互
- unity与ios交互
- Unity与Android交互
- Android中级教程之----Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)!
- zoj 1221 Risk
- 结构型模式-----享元模式(Flyweight)
- boost学习
- 2013年hello world高校开源应用设计大赛走进厦门大
- 转~Unity与注册登录服务器交互原理及code
- struts 提供的标签iterator,开发应用常用知识
- 低版本的 opencv库的 vs2010 打开 高版本opencv
- windows7 cocos2d-x 2.1.4 环境搭建(2 创建项目)
- 再谈数据压缩
- android webService 异步访问
- 顺序线性表
- 在Fedora16中安装Qt
- Centos 下Skype安装