自从过上程序员的生活,身边总是或多或少的提及一些API(应用程序接口),网上各种入门教程、实例大把大把,有的只是贴上部分代码,也不给注释, 写Demo的时候连编译都无法通过。下面我从小白开始来介绍下调用手机API的详细步骤
1. 准备工作,查阅相关接口信息,部分商业的时收费的
接口地址
http://sj.apidata.cn/
请求参数
参数名 | 参数说明 |
---|---|
mobile | 要查询的手机号码。 |
callback | 需要JSONP格式的返回数据时需要指定callback。 |
请求示例
http://sj.apidata.cn/?mobile=13488888888
返回字段
字段名 | 字段类型 | 字段说明 |
---|---|---|
status | integer | 接口请求状态:0=请求失败,1=请求成功 |
data | object | 返回的结果数据对象 |
message | string | 返回的消息,请求失败时返回失败原因 |
data节点字段说明:
字段名 | 字段类型 | 字段说明 |
---|---|---|
prefix | integer | 手机号码号段。 |
mobile | string | 查询的手机号码 |
province | string | 归属地省份名称。 |
city | string | 归属地城市名称 |
isp | string | 归属的运营商名称 |
code | integer | 归属地行政编号 |
zipcode | integer | 归属地邮政编码 |
types | string | 手机号码卡信息 |
返回示例{
"status": 1, "data": { "prefix": 138, "province": "云南", "city": "昆明", "isp": "移动", "code": 871, "zipcode": 650500, "types": "中国移动 GSM", "mobile": "13888888888" }, "message":"success" } 2.发送请求,处理返回结果
private void GetNumInform(string num) { string url = "http://sj.apidata.cn/?mobile=" + num; //請求數據 HttpWebRequest res = (HttpWebRequest)WebRequest.Create(url); //方法名 res.Method = "GET"; //獲取餉應數據 HttpWebResponse resp = (HttpWebResponse)res.GetResponse(); //讀取數據流 StreamReader sr = new StreamReader(resp.GetResponseStream(),Encoding.UTF8); //編譯成字符串 string resphtml = sr.ReadToEnd(); #region Demo1 //獲取Json數據對象 NumDes numdes = JsonConvert.DeserializeObject<NumDes>(resphtml); string city = numdes.data["city"].ToString(); string isp = numdes.data["isp"].ToString(); #endregion #region Demo2 JObject numdbers = JObject.Parse(resphtml); string c = numdbers["data"]["city"].ToString(); #endregion TextBox2.Text = city + isp; }
3. 调用序列化库,否则无法识别JObject、JsonConvert 对象,VS自带的有Nuget包,里面有我们需要的Newtonsoft包,只需要安装就可以
依次打开: 工具-Nuget程序包管理器-程序包管理器控制台
输入: Install-Package Newtonsoft.json
如果提示安装失败,或者版本不一致,需要Nuget升级到最新版本,则在依旧在管理列表中先卸载Nuget包,然后在重新安装便是最新版本
4. 对于上面Demo1 的numdes 对象,需要新建一个实体类,创建与接口网站返回值对应的属性,在http://sj.apidata.cn/中,返回的字段为:stasus、data、message,所以在新建的类中写入对应的成员字段,如下
public class NumDes { public int status { get; set; } public Dictionary<string,string> data { get; set; } public string message { get; set; } }
5.启动程序,得到返回的城市、运营商
时间: 2024-10-14 04:48:20