Unity中实现号码归属地的查询

这里,我们在Unity中实现号码归属地的查询的功能,本文用到的是Mob的归属地查询免费接口。


Unity中实现号码归属地的查询_第1张图片

http://www.mob.com,这是Mob的官网网址,首先要注册,然后在免费的API中寻找我们的号码归属地查询的API

Unity中实现号码归属地的查询_第2张图片


Unity中实现号码归属地的查询_第3张图片

http://apicloud.mob.com/v1/mobile/address/query?key=123456&phone=13300001982

注意 这里的key在代码中替换成1190a5a6459a8(这是我申请的接口的APPKey值)Phone=后面不没有数字


下面我们打开Unity 创建一个新工程,创建一个画布,进行简单的UI搭建,结构比较简单 这里不在赘述。

Unity中实现号码归属地的查询_第4张图片


Unity中实现号码归属地的查询_第5张图片
这是UI的结构图

注意搭建时候我们的输入框InputField(我把它命名为PhoneNumLabel)的属性 Character Limit为11,因为我们电话都是11位的,Content Type属性为 Integer Number,表示输入的必须是数字

Unity中实现号码归属地的查询_第6张图片


下面在Assets文件夹下创建Script文件夹来存放脚本,我们需要创建六个脚本


Unity中实现号码归属地的查询_第7张图片

首先创建PhoneModle脚本:

usingUnityEngine;

usingSystem.Collections;

publicclassPhoneModle:MonoBehaviour{

publicstringmCity;

publicstringmCityCode;

publicstringmMobileNumber;

publicstringmOperator;

publicstringmProvince;

publicstringmZipCode;

publicPhoneModle(stringcity,stringcityCode,stringmoblieNumber,stringOperator,stringProvince,stringZipCode)

{

this.mCity=city;

this.mCityCode=cityCode;

this.mMobileNumber=moblieNumber;

this.mOperator=Operator;

this.mProvince=Province;

this.mZipCode=ZipCode;

}

publicPhoneModle(string[]result)

{

intindex=0;

this.mCity=result[index++];

this.mCityCode=result[index++];

this.mMobileNumber=result[index++];

this.mOperator=result[index++];

this.mProvince=result[index++];

this.mZipCode=result[index++];

}

}

这里写了两个初始化方法一个是单个的字符串 一个是字符串的数组 实现功能都一样

然后创建ItemView脚本:

usingUnityEngine;

usingSystem.Collections;

usingUnityEngine.UI;

publicclassItemView:MonoBehaviour{

//模型

publicPhoneModlemPhoneModle;

//UI组件

publicTextmPhoneNumValue;

//找物体(引用)

voidAwake()

{

mPhoneNumValue=GameObject.Find("PhoneHomeValue").GetComponent();

}

//让UI组件显示数值

publicvoidShow()

{

mPhoneNumValue.text=mPhoneModle.mCity;

}

}

同时我们把它挂载到我们的画布上,注意引入UI的命名空间


Unity中实现号码归属地的查询_第8张图片

然后我们接着创建ViewController脚本:

usingUnityEngine;

usingSystem.Collections;

usingUnityEngine.UI;

publicclassViewController:MonoBehaviour{

ItemViewmItemView;

InputFieldmPhoneNumInput;

TextmPhoneHomeValue;

voidAwake()

{

mItemView=GetComponent();

mPhoneNumInput=GameObject.Find("PhoneNumLabel").GetComponent();

mPhoneHomeValue=GameObject.Find("PhoneHomeValue").GetComponent();

mPhoneNumInput.onEndEdit.AddListener(OnEndEdit);

}

//输入完毕之后点击

voidOnEndEdit(stringvalue)

{

stringurl=Global.MobileAPI+value;

HTTPUtil.GetInstance().HttpRequestText(url,MyCallBack);

}

//注意这里是最后的显示方法

void MyCallBack(stringresult)

{

string[]res=MyJSON.GetResultArray(result);

mItemView.mPhoneModle=newPhoneModle(res);

mItemView.Show();

}

}

同样 我们把它也挂载到我们的画布上

接着我们创建Global脚本:

usingUnityEngine;

usingSystem.Collections;

public class Global{

public const string MobileAPI="http://apicloud.mob.com/v1/mobile/address/query?key=1190a5a6459a8&phone=";

}

注意这是一个单例脚本 不继承MonoBehaviour类 同时注意开篇时候说的,把key后面的字符串变成你申请的那个APPKey,等号后面没有数字

接着我们创建HTTPUtil脚本:

usingUnityEngine;

usingSystem.Collections;

public  class  HTTPUtil:MonoBehaviour{

//声明构造函数

private static HTTPUtilinstance;

//创建构造函数方法

public static HTTPUtilGetInstance()

{

if(instance==null){

instance=newGameObject().AddComponent();

}

return instance;

}

//负责加载资源

publicvoidHttpRequestText(stringurl,System.ActionsuccessCallBack)

{

StartCoroutine(IEHttpRequestText(url,successCallBack));

}

//使用协程加载资源

IEnumeratorIEHttpRequestText(stringurl,System.ActionsuccessCallBack)

{

WWWwww=newWWW(url);

yieldreturnwww;

//执行回调

successCallBack(www.text);

}

}

这个脚本主要是通过协程去加载我们去请求的数据

最后,就是创建我们的Json数据解析类(因为传送过来的数据都包含在json格式的字符串中 我们想使用其中的一个字符串,必须先把它解析一下)

MyJSON脚本:

usingUnityEngine;

usingSystem.Collections;

usingSystem;

publicstaticclassMyJSON{

//判断消息是否OK

privatestaticboolIsOK(stringjson)

{

intmsgIndex=json.IndexOf(":")+1;

intfirstIndex=json.IndexOf(",")-2;

stringresult=json.Substring(msgIndex+1,firstIndex-msgIndex);

returnresult.Equals("success");

}

//获取对象

publicstaticstringGetResultJson(stringjson)

{

if(!IsOK(json))return"error";

intlastIndex=json.LastIndexOf(",");

intfirstIndex=json.IndexOf("city")-1;

intlen=lastIndex-firstIndex-1;

stringresult=json.Substring(firstIndex,len);

returnresult;

}

publicstaticstring[]GetResultArray(stringjson)

{

if(!IsOK(json))returnnull;

intlastIndex=json.LastIndexOf(",");

intfirstIndex=json.IndexOf("city")-1;

intlen=lastIndex-firstIndex-1;

stringresult=json.Substring(firstIndex,len);

string[]array=result.Split(newchar[]{','});

string[]res=newstring[array.Length];

for(inti=0;i

{

intstart=array[i].IndexOf(":")+2;

intend=array[i].LastIndexOf('"');

res[i]=array[i].Substring(start,end-start);

}

returnres;

}

}

注意引入System的命名空间

这时 运行我们的程序 就可以实现我们的功能了


Unity中实现号码归属地的查询_第9张图片

你可能感兴趣的:(Unity中实现号码归属地的查询)