客户端发送一个http协议数据包给服务端,服务端收到之后就进行解析,然后将结果返回给我们,我们获得数据之后就可以写自己的业务逻辑代码。
流程:
a.创建UnityWebRequest对象
b.配置UnityWebRequest对象
c.发送请求
后面有发送账号密码进行登录请求的两种方式。
-->从 HTTP 服务器下载文本或二进制数据 (GET)
//从服务器获取文件内容(如热更新需要获取版本号)
IEnumerator ReadResVersion() {
UnityWebRequest req = UnityWebRequest.Get("http://127.0.0.1:6080/version.txt");
yield return req.SendWebRequest();
Debug.Log(req.downloadHandler.text);
yield break;
}
-->从 HTTP 服务器下载纹理 (GET)
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class MyBehaviour : MonoBehaviour {
void Start() {
StartCoroutine(GetTexture());
}
IEnumerator GetTexture() {
UnityWebRequest www = UnityWebRequestTexture.GetTexture("http://www.my-server.com/image.png");
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
Texture myTexture = ((DownloadHandlerTexture)www.downloadHandler).texture;
}
}
}
或者也可以使用 helper getter 来实现 GetTexture:
IEnumerator GetTexture() {
UnityWebRequest www = UnityWebRequestTexture.GetTexture("http://www.my-server.com/image.png");
yield return www.SendWebRequest();
Texture myTexture = DownloadHandlerTexture.GetContent(www);
}
-->从 HTTP 服务器下载声音 (GET)
//从服务器下载资源文件,如声音、图片
IEnumerator downloadResFile() {
string url = "http://127.0.0.1:6080/Sounds/Audio_Bg_LogOn.mp3";
UnityWebRequest req = UnityWebRequest.Get(url);
yield return req.SendWebRequest();
byte[] body = req.downloadHandler.data;
// 保存到你的本地, C#读写文件就可以了;
string fileName = Application.persistentDataPath + "/80000.mp3";
Debug.Log(fileName);
GameUtility.SafeWriteAllBytes(fileName, body);
yield break;
}
-->从 HTTP 服务器下载 AssetBundle (GET)
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class MyBehaviour : MonoBehaviour {
void Start() {
StartCoroutine(GetAssetBundle());
}
IEnumerator GetAssetBundle() {
UnityWebRequest www = UnityWebRequest.GetAssetBundle("http://www.my-server.com/myData.unity3d");
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
}
}
}
-->将原始数据上传到 HTTP 服务器 (PUT)
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class MyBehavior : MonoBehaviour {
void Start() {
StartCoroutine(Upload());
}
IEnumerator Upload() {
byte[] myData = System.Text.Encoding.UTF8.GetBytes("This is some test data");
UnityWebRequest www = UnityWebRequest.Put("http://www.my-server.com/upload", myData);
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
Debug.Log("Upload complete!");
}
}
}
//上传声音文件到服务器(如游戏中玩家说话产生的语音)
IEnumerator uploadFile() {
string fileName = Application.persistentDataPath + "/80000.mp3";
byte[] body = GameUtility.SafeReadAllBytes(fileName);
UnityWebRequest req = UnityWebRequest.Put("http://127.0.0.1:6080/UploadFile", body);
yield return req.SendWebRequest();
Debug.Log(req.downloadHandler.text);
yield break;
}
发送账号密码进行登录请求的两种方式:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class HttpRequest : MonoBehaviour {
public string username;
public string password;
/// 例用账号密码登录的时候
/// <summary>
/// 一种Get方法
/// UnityWebRequest.Get("http://192.168.1.1:9982/user/login?username=tony&password=123");
/// </summary>
/// <returns></returns>
public IEnumerator HttpRequest1()
{
UnityWebRequest webRequest = UnityWebRequest.Get("url");
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
//网络错误
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
//这时候应该能拿到数据了
}
}
}
/// 例用账号密码登录的时候
/// <summary>
/// 一种Post方法
/// UnityWebRequest.Post("http://192.168.1.1:9982/user/login", form);
/// </summary>
/// <returns></returns>
public IEnumerator HttpRequest2()
{
WWWForm form = new WWWForm();
form.AddField("username", username);
form.AddField("password", password);
UnityWebRequest webRequest = UnityWebRequest.Post("url", form);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
//网络错误
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
//这时候应该能拿到数据了
}
}
}
}
后续补充:
自己项目中的实际应用,接口需要跟后端一起确定,代码可能有些不够严谨。
using Global;
using LitJson;
using MyUIFrame;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Networking.Types;
//=================================App登录注册界面===============================
//获取验证码请求
public class AppCaptchaReq
{
public string mobile;//手机号 账号
public string type;//1邮箱 2登录 3注册 4修改密码
}
//注册请求
public class AppRegistReq
{
public string mobile;//账号 手机号
public string password;//密码
public string code;//验证码
public string uuid;
}
//登录请求
public class AppLoginReq
{
public string userName;//账号 手机号
public string password;//密码
public string code;//验证码
public string uuid;
}
//修改密码请求
public class AppChangePasswordReq
{
public string userName;//账号 手机号
public string password;//密码
public string code;//验证码
public string uuid;
}
//创建家长账号请求
public class AppCreateParentAccountReq
{
public string userName;//账号
public string password;//密码
public string nickName;//姓名
public int sex;//性别
public int age;//年龄
public string userClass;//班级
public int playTime;//游戏时长
//public string idCardNumber;//身份证号码
public int educational;//学历
public string address;//地址
public int nation;//民族
public string birthday;//生日
}
//创建子账号请求
public class AppCreateChildAccountReq
{
public string userName;//账号
public string password;//密码
public string nickName;//姓名
public int sex;//性别
public int age;//年龄
public string userClass;//班级
public int playTime;//游戏时长
public int educational;//学历
public string address;//地址
public int nation;//民族
public string birthday;//生日
}
//修改家长资料/子账号资料请求
public class AppChangeParentChildAccountInfoReq
{
public string id;//id
public string password;//密码
public int sex;//性别
public string email;//邮箱
public string avatar;//头像
public int age;//年龄
public string nickName;//昵称
public int weight;//体重
public string userClass;//班级
public string cardNum;//身份证号码
public int educational;//学历
public string address;//地址
public int nation;//民族
public string birthday;//生日
public int playTime;//游戏时长
public int status;//是否删除了账号(暂时删除,随时可恢复) 0 正常 1停用
}
//修改手机号码请求
public class AppChangeMobileReq
{
public string userName;//手机号
public string code;//验证码
public string uuid;
}
//验证码请求回应信息
public class AppCaptchaResInfo
{
public int code;
public string msg;
public AppCaptchaData data;//data部分也是json字符串,所以要用个类
}
public class AppCaptchaData
{
public string enable;
public string uuid;
}
public class AppResInfo
{
public int code;
public string msg;
public TokenData data;//data部分也是json字符串,所以要用个类
}
//=================================游戏登录界面===============================
public class GameAccount
{
public string username;
public string password;
public string type;
public string mobile;
public string code;
public string uuid;
}
//登录请求
public class GameLoginReq
{
public string userName;//账号 手机号
public string password;//密码
}
public class TokenData
{
public string access_token;//获取到的token
}
//游戏登录界面账号请求回应信息
public class GameAccountResInfo
{
public int code;
public string msg;
public TokenData data;//data部分也是json字符串,所以要用个类
}
public class ClientId
{
public string clientId;
}
public class HttpClient : MonoBehaviour
{
public static HttpClient instance;
//多人服务器(本地服务器)
string HttpUrl = "http://xx.xx.xx.xx:8080";
//云服务器
//string HttpUrl = "http://xx.xx.xx.xx:8080";
//本地服务器(暂时没用)
//string HttpUrl = "http://xx.xx.xx.xx:8080";
//后端电脑
//string HttpUrl = "http://xx.xx.xx.xx:8080";
#region App登录注册界面
private string m_AppUsername;//账号 等于手机号
private string m_AppPassword;//密码
private string m_AppCaptcha;//验证码
private string m_AppUuid;// uuid
private string m_AppCaptchaType;//验证码请求方式 1邮箱 2登录 3注册 4修改密码
private bool m_AppIsRegistReqSucc = false;//注册请求是否成功
private bool m_AppIsLoginReqSucc = false;//登录请求是否成功
private bool m_AppIsChangePasswordReqSucc = false;//修改密码请求是否成功
private bool m_AppIsCaptchaReqSucc = false;//验证码请求是否成功
private bool m_AppIsCreateAccountReqSucc = false;//创建账号请求是否成功
private bool m_AppIsCreateParentAccountReqSucc = false;//创建账号请求是否成功
private bool m_AppIsChangeMobileReqSucc = false;//修改手机号码请求是否成功
private bool m_AppIsGetAllChildAccountReqSucc = false;//查询所有子账号请求是否成功
private bool m_AppIsChangeParentAccountReqSucc = false;//修改家长账号请求是否成功
private bool m_AppIsChangeChildAccountReqSucc = false;//修改子账号请求是否成功
private Coroutine m_AppCaptchaCor;//验证码请求
private Coroutine m_AppRegistCor;//注册请求
private Coroutine m_AppLoginCor;//登录请求
private Coroutine m_AppChangePasswordCor;//修改密码请求
private Coroutine m_AppCreateChildAccountCor;//创建子账号请求
private Coroutine m_AppCreateParentAccountCor;//创建家长账号请求
private Coroutine m_AppChangeMobileCor;//修改家长手机号码请求
private Coroutine m_AppGetAllChildAccountCor;//查询所有子账号
private Coroutine m_AppChangeParentAccountCor;//修改家长账号资料
private Coroutine m_AppChangeChildAccountCor;//修改子账号资料
private Coroutine m_GameLoginCor;//游戏登录
private string m_AppRegistPath = "/user/user/registerUser";
private string m_AppLoginPath = "/auth/app/login";
private string m_AppChangePasswordPath = "/user/user/updatePwd";//修改密码
private string m_AppChangeMobilePath = "/user/user/updateMobile";//修改手机号
private string m_AppCaptchaPath = "/code";//获取验证码
private string m_AppCreateAccountPath = "/user/user/createChildUser";//
private string m_AppUpdateAccountPath = "/user/user/updateChildUser";//
private string m_AppRequestGetAllChildAccountPath = "/user/user/getList";//查询子账号
#endregion
#region 游戏登录界面
private string m_GameUsername;
private string m_GamePassword;
private string m_GameToken;
private bool m_GameIsReqAccountSucc = false;//请求账号密码是否成功
private bool m_GameIsReqBindDeviceSucc = false;//请求绑定设备是否成功
private bool m_GameIsLoginReqSucc = false;//账号密码登录是否成功
private LoginUIForm loginUIForm;
private string m_GameLoginPath = "/auth/app/pwdLogin";
private string m_GameAccountPath = "/auth/app/login";
private string m_GameBindDevicePath = "/user/user/bindEquip";
//多人服务器
//string GameUrl = "http://10.5.1.156:8080/auth/app/login";//账号密码
//string GameUr2 = "http://10.5.1.156:8080/user/user/bindEquip";//绑定设备
//云服务器
//string GameUrl = "http://121.40.120.227:8080/auth/app/login";//账号密码 本地服务器10.5.1.121,王鹏电脑148 云服务器121.40.120.227
//string GameUr2 = "http://121.40.120.227:8080/user/user/bindEquip";//绑定设备 本地服务器10.5.1.121,王鹏电脑148 云服务器121.40.120.227
//本地服务器
//string GameUrl = "http://10.5.1.121:8080/auth/app/login";//账号密码 本地服务器10.5.1.121,王鹏电脑148 云服务器121.40.120.227
//string GameUr2 = "http://10.5.1.121:8080/user/user/bindEquip";//绑定设备 本地服务器10.5.1.121,王鹏电脑148 云服务器121.40.120.227
//后端电脑
//string GameUrl = "http://10.5.1.148:8080/auth/app/login";//账号密码 本地服务器10.5.1.121,王鹏电脑148 云服务器121.40.120.227
//string GameUr2 = "http://10.5.1.148:8080/user/user/bindEquip";//绑定设备 本地服务器10.5.1.121,王鹏电脑148 云服务器121.40.120.227
#endregion
private void Awake()
{
instance = this;
m_AppCaptcha = "-1";
}
private void Update()
{
#region 测试
//if (Input.GetKeyDown(KeyCode.Keypad1))//注册请求验证码
//{
// Debug.Log("注册请求验证码");//手机号、类型
// AppRequestCaptcha("17620953826", "3");
//}
//if (Input.GetKeyDown(KeyCode.Keypad2))//登录请求验证码
//{
// Debug.Log("登录请求验证码");//手机号、类型
// AppRequestCaptcha("17620953826", "2");
//}
//if (Input.GetKeyDown(KeyCode.Keypad3))//修改密码请求验证码
//{
// Debug.Log("修改密码请求验证码");//手机号、类型
// AppRequestCaptcha("17620953826", "4");
//}
//if (Input.GetKeyDown(KeyCode.Keypad4))//注册请求
//{
// if(m_AppIsCaptchaReqSucc && m_AppCaptchaType == "3")
// {
// Debug.Log("注册请求");//账号、密码、验证码
// AppRequestRegist("17620953826", "123456", "453476");
// }
// else
// {
// Debug.Log("注册请求失败,m_AppIsCaptchaReqSucc = " + m_AppIsCaptchaReqSucc + " ,m_CaptchaType = " + m_AppCaptchaType);
// }
//}
//if (Input.GetKeyDown(KeyCode.Keypad5))//登录请求
//{
// if (m_AppIsCaptchaReqSucc && m_AppCaptchaType == "2")
// {
// Debug.Log("登录请求");//账号、密码、验证码
// AppRequestLogin("15019478646", "123456", "453476");
// }
// else
// {
// Debug.Log("登录请求失败,m_AppIsCaptchaReqSucc = " + m_AppIsCaptchaReqSucc + " ,m_CaptchaType = " + m_AppCaptchaType);
// }
//}
//if (Input.GetKeyDown(KeyCode.Keypad6))//修改密码请求
//{
// if (m_AppIsCaptchaReqSucc && m_AppCaptchaType == "4")
// {
// Debug.Log("修改密码请求");//账号、密码、验证码
// AppRequestChangePassword("15019478646", "654321", "453476");
// }
// else
// {
// Debug.Log("修改密码请求失败,m_AppIsCaptchaReqSucc = " + m_AppIsCaptchaReqSucc + " ,m_CaptchaType = " + m_AppCaptchaType);
// }
//}
//if (Input.GetKeyDown(KeyCode.Keypad7))//创建账号请求
//{
// Debug.Log("创建账号请求");
// AppRequestCreateAccount("15019478646", "123456", "王小明", "8", "男", "3|2", "123456789987654321", 60);
//}
#endregion
}
#region App登录注册界面
public void SetAppUsername(string username)
{
m_AppUsername = username;
}
public void SetAppPassword(string password)
{
m_AppPassword = password;
}
public void SetAppCaptcha(string captcha)
{
m_AppCaptcha = captcha;
}
public void SetAppCaptchaType(string captchaType)
{
m_AppCaptchaType = captchaType;
}
//App部分请求验证码
public void AppRequestCaptcha(string mobile, string type)
{
m_AppCaptchaType = type;
m_AppCaptchaCor = StartCoroutine(IEAppRequestCaptcha(mobile, type));
}
//App部分请求验证码 "修改手机号"
public void AppRequestCaptcha1(string mobile, string type)
{
m_AppCaptchaType = type;
m_AppCaptchaCor = StartCoroutine(IEAppRequestCaptchaByJson1(mobile, type));
}
//App部分请求注册
public void AppRequestRegist(string username, string password, string captcha, string uuid)
{
m_AppRegistCor = StartCoroutine(IEAppRequestRegistByJson(username, password, captcha, uuid));
}
//App部分请求登录
public void AppRequestLogin(string username, string password, string captcha, string uuid)
{
m_AppLoginCor = StartCoroutine(IEAppRequestLoginByJson(username, password, captcha, uuid));
}
//App部分请求更改密码
public void AppRequestChangePassword(string username, string password, string captcha, string uuid)
{
m_AppChangePasswordCor = StartCoroutine(IEAppRequestChangePasswordByJson(username, password, captcha, uuid));
}
//App部分请求所有子账号
public void AppRequestGetAllChildAccount(string mobile)
{
m_AppGetAllChildAccountCor = StartCoroutine(IEAppRequestGetAllChildAccount(mobile));
}
//App部分请求创建子账号
public void AppRequestCreateChildAccount(AppCreateChildAccountReq account)
{
m_AppCreateChildAccountCor = StartCoroutine(IEAppRequestCreateChildAccountByJson(account));
}
//App部分请求修改子账号资料
public void AppRequestChangeChildAccount(AppChangeParentChildAccountInfoReq account)
{
m_AppChangeChildAccountCor = StartCoroutine(IEAppRequestChangeChildAccountByJson(account));
}
//App部分请求创建家长账号
public void AppRequestCreateParentAccount(AppCreateParentAccountReq account)
{
m_AppCreateParentAccountCor = StartCoroutine(IEAppRequestCreateParentAccountByJson(account));
}
//App部分请求修改家长账号资料
public void AppRequestChangeParentAccount(AppChangeParentChildAccountInfoReq account)
{
m_AppChangeParentAccountCor = StartCoroutine(IEAppRequestChangeParentAccountByJson(account));
}
//App部分请求更改家长手机号
public void AppRequestChangeMobile(string userName, string captcha, string uuid)
{
m_AppChangeMobileCor = StartCoroutine(IEAppRequestChangeMobileByJson(userName, captcha, uuid));
}
//App登录注册界面请求获取短信验证码
IEnumerator IEAppRequestCaptcha(string mobile, string type)
{
UnityWebRequest webRequest = UnityWebRequest.Get(HttpUrl + m_AppCaptchaPath + "?mobile=" + mobile + "&type=" + type);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsCaptchaReqSucc = false;
Debug.Log("App登录注册界面,请求验证码网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppCaptchaResInfo info = JsonMapper.ToObject<AppCaptchaResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,请求验证码成功");
m_AppIsCaptchaReqSucc = true;
m_AppUuid = info.data.uuid;
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "Captcha", m_AppCaptchaType, m_AppUuid);
}
else
{
Debug.Log("App登录注册界面,请求验证码失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,请求验证码失败" + info.code);
}
}
}
}
//App登录注册界面请求获取短信验证码 "修改手机号"
IEnumerator IEAppRequestCaptchaByJson1(string mobile, string type)
{
UnityWebRequest webRequest = UnityWebRequest.Get(HttpUrl + m_AppCaptchaPath + "?mobile=" + mobile + "&type=" + type);
//添加请求头信息
webRequest.SetRequestHeader("Authorization", "Bearer " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsCaptchaReqSucc = false;
Debug.Log("App登录注册界面,修改手机号--请求验证码网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppCaptchaResInfo info = JsonMapper.ToObject<AppCaptchaResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,修改手机号--请求验证码成功");
m_AppIsCaptchaReqSucc = true;
m_AppUuid = info.data.uuid;
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "Captcha", m_AppCaptchaType, m_AppUuid);
}
else
{
Debug.Log("App登录注册界面,修改手机号--请求验证码失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,修改手机号--请求验证码失败" + info.code);
}
}
}
}
//App登录注册界面通过json方式请求注册 发送Json数据格式的Post请求
IEnumerator IEAppRequestRegistByJson(string username, string password, string captcha, string uuid)
{
AppRegistReq account = new AppRegistReq();
account.mobile = username;
account.password = password;
account.code = captcha;
account.uuid = uuid;
string jsonStr = JsonMapper.ToJson(account);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_AppRegistPath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsRegistReqSucc = false;
Debug.Log("App登录注册界面,注册请求网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppResInfo info = JsonMapper.ToObject<AppResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,注册请求成功");
m_AppIsRegistReqSucc = true;
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "Regist", "1", null);//1成功,0失败
}
else
{
Debug.Log("App登录注册界面,注册请求失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,注册请求失败" + info.code);
}
}
}
}
//App登录注册界面通过json方式请求登录 发送Json数据格式的Post请求
IEnumerator IEAppRequestLoginByJson(string username, string password, string captcha, string uuid)
{
AppLoginReq account = new AppLoginReq();
account.userName = username;
account.password = password;
account.code = captcha;
account.uuid = uuid;
string jsonStr = JsonMapper.ToJson(account);
Debug.Log("登录请求:" + jsonStr);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_AppLoginPath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsLoginReqSucc = false;
Debug.Log("App登录注册界面,请求登录网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
//解决字符串中文乱码问题
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
string str = reg.Replace(webRequest.downloadHandler.text, delegate (Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
AppResLoginInfo info = JsonMapper.ToObject<AppResLoginInfo>(str);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,请求登录成功");
m_AppIsLoginReqSucc = true;
//全局保存家长账号信息
GlobalParamMgr.G_AppParentAccountInfo = info;
//m_AppToken = info.data.access_token;//m_AppToken暂时不用放到GlobalParamMgr中
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "Login", "1", null);//1成功,0失败
}
else
{
Debug.Log("App登录注册界面,请求登录失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,请求登录失败" + info.code);
}
}
}
}
//App登录注册界面通过json方式请求更改密码 发送Json数据格式的Post请求
IEnumerator IEAppRequestChangePasswordByJson(string username, string password, string captcha, string uuid)
{
AppChangePasswordReq account = new AppChangePasswordReq();
account.userName = username;
account.password = password;
account.code = captcha;
account.uuid = uuid;
string jsonStr = JsonMapper.ToJson(account);
Debug.Log("更改密码请求:" + jsonStr);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_AppChangePasswordPath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsChangePasswordReqSucc = false;
Debug.Log("App登录注册界面,请求更改密码网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppResInfo info = JsonMapper.ToObject<AppResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,请求更改密码成功");
m_AppIsChangePasswordReqSucc = true;
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "ChangePW", "1", null);//1成功,0失败
}
else
{
Debug.Log("App登录注册界面,请求更改密码失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,请求更改密码失败" + info.code);
}
}
}
}
//App登录注册界面请求获取所有子账号
IEnumerator IEAppRequestGetAllChildAccount(string mobile)
{
UnityWebRequest webRequest = UnityWebRequest.Get(HttpUrl + m_AppRequestGetAllChildAccountPath);
//添加请求头信息
webRequest.SetRequestHeader("Authorization", "Bearer " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsGetAllChildAccountReqSucc = false;
Debug.Log("App登录注册界面,查询所有子账号网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppResChildAccountInfo info = JsonMapper.ToObject<AppResChildAccountInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,查询所有子账号成功");
m_AppIsGetAllChildAccountReqSucc = true;
kernal.EventCenter.SendGameMessage(kernal.EventType.AppGetAllChildAccount.ToString(), "GetAllChildAccount", "1", info);
}
else
{
Debug.Log("App登录注册界面,查询所有子账号失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,查询所有子账号失败" + info.code);
}
}
}
}
//App登录注册界面通过json方式请求创建子账号 发送Json数据格式的Post请求
IEnumerator IEAppRequestCreateChildAccountByJson(AppCreateChildAccountReq account)
{
string jsonStr = JsonMapper.ToJson(account);
//解决litjson转换的字符串中文乱码问题
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
jsonStr = reg.Replace(jsonStr, delegate (Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
Debug.Log("创建子账号请求:" + jsonStr + ", AppToken = " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_AppCreateAccountPath, UnityWebRequest.kHttpVerbPOST);
//添加请求头信息
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
webRequest.SetRequestHeader("Authorization", "Bearer " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
//添加请求体信息
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsCreateAccountReqSucc = false;
Debug.Log("App登录注册界面,请求创建子账号网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppResInfo info = JsonMapper.ToObject<AppResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,请求创建子账号成功");
m_AppIsCreateAccountReqSucc = true;
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "CreateChildAccount", "1", account);//1成功,0失败
}
else
{
Debug.Log("App登录注册界面,请求创建子账号失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,请求创建子账号失败" + info.code);
}
}
}
}
//App登录注册界面通过json方式请求修改子账号资料 发送Json数据格式的Post请求
IEnumerator IEAppRequestChangeChildAccountByJson(AppChangeParentChildAccountInfoReq account)
{
string jsonStr = JsonMapper.ToJson(account);
//解决litjson转换的字符串中文乱码问题
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
jsonStr = reg.Replace(jsonStr, delegate (Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
Debug.Log("修改子账号资料请求:" + jsonStr);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_AppUpdateAccountPath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
webRequest.SetRequestHeader("Authorization", "Bearer " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsChangeChildAccountReqSucc = false;
Debug.Log("App登录注册界面,请求修改子账号资料网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppResInfo info = JsonMapper.ToObject<AppResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,请求修改子账号资料成功");
m_AppIsChangeChildAccountReqSucc = true;
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "ChangeChildAccount", "1", account);//1成功,0失败
}
else
{
Debug.Log("App登录注册界面,请求修改子账号资料失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,请求修改子账号资料失败" + info.code);
}
}
}
}
//App家长账号界面通过json方式请求创建家长账号 发送Json数据格式的Post请求
IEnumerator IEAppRequestCreateParentAccountByJson(AppCreateParentAccountReq account)
{
string jsonStr = JsonMapper.ToJson(account);
//解决litjson转换的字符串中文乱码问题
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
jsonStr = reg.Replace(jsonStr, delegate (Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
Debug.Log("提交家长账号信息请求:" + jsonStr + ", AppToken = " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_AppCreateAccountPath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
webRequest.SetRequestHeader("Authorization", "Bearer " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsCreateParentAccountReqSucc = false;
Debug.Log("App家长账号界面,提交家长账号信息网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppResInfo info = JsonMapper.ToObject<AppResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App家长账号界面,提交家长账号信息成功");
m_AppIsCreateParentAccountReqSucc = true;
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "CreateParentAccount", "1", account);//1成功,0失败
}
else
{
Debug.Log("App家长账号界面,提交家长账号信息失败" + info.code);
}
}
else
{
Debug.Log("App家长账号界面,提交家长账号信息失败" + info.code);
}
}
}
}
//App登录注册界面通过json方式请求修改子账号资料 发送Json数据格式的Post请求
IEnumerator IEAppRequestChangeParentAccountByJson(AppChangeParentChildAccountInfoReq account)
{
string jsonStr = JsonMapper.ToJson(account);
//解决litjson转换的字符串中文乱码问题
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
jsonStr = reg.Replace(jsonStr, delegate (Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
Debug.Log("修改家长账号资料请求:" + jsonStr);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_AppUpdateAccountPath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
webRequest.SetRequestHeader("Authorization", "Bearer " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsChangeParentAccountReqSucc = false;
Debug.Log("App登录注册界面,请求修改家长账号资料网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppResInfo info = JsonMapper.ToObject<AppResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,请求修改家长账号资料成功");
m_AppIsChangeParentAccountReqSucc = true;
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "ChangeParentAccount", "1", account);//1成功,0失败
}
else
{
Debug.Log("App登录注册界面,请求修改家长账号资料失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,请求修改家长账号资料失败" + info.code);
}
}
}
}
//App登录注册界面通过json方式请求更改密码 发送Json数据格式的Post请求
IEnumerator IEAppRequestChangeMobileByJson(string userName, string captcha, string uuid)
{
AppChangeMobileReq account = new AppChangeMobileReq();
account.userName = userName;
account.code = captcha;
account.uuid = uuid;
string jsonStr = JsonMapper.ToJson(account);
Debug.Log("更改手机号码请求:" + jsonStr + ", AppToken = " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_AppChangeMobilePath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
webRequest.SetRequestHeader("Authorization", "Bearer " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_AppIsChangeMobileReqSucc = false;
Debug.Log("App登录注册界面,请求更改手机号码网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
AppResInfo info = JsonMapper.ToObject<AppResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("App登录注册界面,请求更改手机号码成功");
m_AppIsChangeMobileReqSucc = true;
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "ChangeMobile", "1");//1成功,0失败
}
else
{
Debug.Log("App登录注册界面,请求更改手机号码失败" + info.code);
}
}
else
{
Debug.Log("App登录注册界面,请求更改手机号码失败" + info.code);
}
}
}
}
#endregion
#region 游戏登录界面
//===================================现在的================================================
//Game部分请求登录
public void GameRequestLogin(string username, string password)
{
m_GameLoginCor = StartCoroutine(IEGameRequestLoginByJson(username, password));
}
//App登录注册界面通过json方式请求登录 发送Json数据格式的Post请求
IEnumerator IEGameRequestLoginByJson(string username, string password)
{
GameLoginReq account = new GameLoginReq();
account.userName = username;
account.password = password;
string jsonStr = JsonMapper.ToJson(account);
Debug.Log("游戏登录请求:" + jsonStr);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_GameLoginPath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
//webRequest.SetRequestHeader("Authorization", "Bearer " + GlobalParamMgr.G_AppParentAccountInfo.data.access_token);
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_GameIsLoginReqSucc = false;
Debug.Log("Game登录界面,请求登录网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
GameAccountResInfo info = JsonMapper.ToObject<GameAccountResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("Game登录界面,请求登录成功");
m_GameIsLoginReqSucc = true;
m_GameToken = info.data.access_token;
GlobalParamMgr.G_Authorization = m_GameToken;//不用带"Bearer "
kernal.EventCenter.SendGameMessage(kernal.EventType.HttpRequestResult.ToString(), "GameLogin", "1");//1成功,0失败
}
else
{
Debug.Log("Game登录界面,请求登录失败" + info.code);
}
}
else
{
Debug.Log("Game登录界面,请求登录失败" + info.code);
}
}
}
}
//====================================以前的===============================================
public bool GetGameIsReqAccountSucc()
{
return m_GameIsReqAccountSucc;
}
public bool GetGameIsReqBindDeviceSucc()
{
return m_GameIsReqBindDeviceSucc;
}
//设置账号密码
public void SetAccountInfo(string username, string password)
{
m_GameUsername = username;
m_GamePassword = password;
}
//请求验证账号密码
public void RequestAccount()
{
StartCoroutine("HttpRequestAccountByJson");
}
//游戏登录界面通过json对象请求账号密码登录 发送Json数据格式的Post请求
public IEnumerator HttpRequestAccountByJson()
{
GameAccount account = new GameAccount();
account.username = m_GameUsername;
account.password = m_GamePassword;
account.type = "0";
account.mobile = "";
account.code = "";
account.uuid = "";
string jsonStr = JsonMapper.ToJson(account);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_GameAccountPath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_GameIsReqAccountSucc = false;
Debug.Log("游戏登录界面请求账号密码网络错误");
loginUIForm.ShowTishi("游戏登录界面请求账号密码网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
GameAccountResInfo info = JsonMapper.ToObject<GameAccountResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
Debug.Log("游戏登录界面账号密码请求成功");
loginUIForm.ShowTishi("游戏登录界面账号密码请求成功");
m_GameToken = info.data.access_token;
GlobalParamMgr.G_Authorization = m_GameToken;//"Bearer "
m_GameIsReqAccountSucc = true;
Debug.Log("token = " + m_GameToken);
//请求绑定设备
//StartCoroutine("HttpRequestBindDevice");
loginUIForm.CheckRightState(1);//已经请求过了,不管是否成功都进入下一界面
}
else
{
loginUIForm.ShowTishi("游戏登录界面账号密码请求失败" + info.code);
}
}
else
{
loginUIForm.ShowTishi("游戏登录界面账号密码请求失败" + info.code);
}
}
}
}
//游戏登录界面绑定设备
public IEnumerator HttpRequestBindDevice()
{
ClientId clientid = new ClientId();
clientid.clientId = "6055f981c246";//绑定设备
string jsonStr = JsonMapper.ToJson(clientid);
UnityWebRequest webRequest = new UnityWebRequest(HttpUrl + m_GameBindDevicePath, UnityWebRequest.kHttpVerbPOST);
DownloadHandler downloadHandler = new DownloadHandlerBuffer();
webRequest.downloadHandler = downloadHandler;
webRequest.SetRequestHeader("Content-Type", "application/json;charset=utf-8");//为了保证发送的是json格式字符串
webRequest.SetRequestHeader("Authorization", "Bearer " + m_GameToken);
byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
//发送请求后等待回应
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
m_GameIsReqBindDeviceSucc = false;
Debug.Log("游戏登录界面请求绑定设备网络错误");
loginUIForm.ShowTishi("游戏登录界面请求绑定设备网络错误");
}
else
{
//一般请求成功为200(404,500是Server Error)
if (webRequest.responseCode == 200)
{
GameAccountResInfo info = JsonMapper.ToObject<GameAccountResInfo>(webRequest.downloadHandler.text);
if (info != null)
{
if (info.code == 200)
{
m_GameIsReqBindDeviceSucc = true;
//loginUIForm.ShowTishi("请求绑定设备成功");
Global.GlobalParamMgr.G_IsBindHardBike = true;
Debug.Log(webRequest.downloadHandler.text);
Debug.Log("游戏登录界面请求绑定设备成功");
}
else
{
loginUIForm.ShowTishi("游戏登录界面请求绑定设备失败" + info.code);
}
}
else
{
loginUIForm.ShowTishi("游戏登录界面请求绑定设备失败" + info.code);
}
}
}
loginUIForm.CheckRightState(1);//已经请求过了,不管是否成功都进入下一界面
}
#endregion
//=================================旧的部分,暂时没用==========================
//通过表单请求账号密码登录
//public IEnumerator HttpRequestAccount()
//{
// WWWForm form = new WWWForm();
// //form.AddField("type", "2");
// //form.AddField("mobile", "17620953826");
// form.AddField("username", "user1");
// form.AddField("password", "admin123");
// form.AddField("code", "aa");
// form.AddField("type", "ss");
// UnityWebRequest webRequest = UnityWebRequest.Post(GameUr2, form);
// //发送请求后等待回应
// yield return webRequest.SendWebRequest();
// if (webRequest.isNetworkError || webRequest.isHttpError)
// {
// //网络错误
// Debug.Log("网络错误");
// }
// else
// {
// //一般请求成功为200(404,500是Server Error)
// if (webRequest.responseCode == 200)
// {
// //这时候应该能拿到数据了
// Debug.Log("请求成功");
// Debug.Log(webRequest.downloadHandler.text);
// }
// }
//}
}