自从过上程序员的生活,身边总是或多或少的提及一些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 对象,那么恭喜你,需要安装Newtonsoft包,它藏在VS自带的Nuget包中,只需要安装就可以

依次打开: 工具-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.启动程序,得到返回的城市、运营商

权当做学习笔记

从零开始调用一个手机号归属地查询API的更多相关文章

  1. 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 短信服务:通知类和验证码短信,全国三网合一通道,5秒内到达,费用低 ...

  2. 免费的手机号码归属地查询API接口文档

    聚合数据手机号码归属四查询API接口,根据手机号码或手机号码的前7位,查询手机号码归属地信息,包括省份 .城市.区号.邮编.运营商和卡类型. 通过链接https://www.juhe.cn/docs/ ...

  3. 百度手机号码归属地查询api与返回json处理

    前天无意间在网上看到百度ApiStore,然后好奇就进去看了看.正好最近在某博培训Android,刚学到java基础.抱着锻炼的心态选择手机号码归属地查询api进行练手.api地址 (http://a ...

  4. 一个非常好的php实现手机号归属地查询接口类

    前一阵子看到了一个非常好的php手机归属地查询的类,写的很精简,查询也很精确!大致代码是这样的: <?php header("Content-type:text/html;charse ...

  5. 建立一个更高级别的查询 API:正确使用Django ORM 的方式(转)

    add by zhj: 本文作者是DabApps公司的技术主管,作者认为在view中直接使用Django提供的ORM查询方法是不好的,我对此并不赞同,可能作者 写这篇文章是给Django的初学者看,所 ...

  6. 手机号码归属地查询api接口

    淘宝网 API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回:JSON ...

  7. PHP手机号码归属地查询API接口

    淘宝网 API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回:JSON ...

  8. 【转】建立一个更高级别的查询 API:正确使用Django ORM 的方式

    这个就比较深入啦... http://www.oschina.net/translate/higher-level-query-api-django-orm 结论: 在视图和其他高级应用中使用源生的O ...

  9. 几个免费 IP 归属地查询 API

    1.淘宝:同个IP不能连续查询,需要时间间隔 http://ip.taobao.com/service/getIpInfo.php?ip=114.114.114.114 返回结果 { "co ...

随机推荐

  1. final 评论 I

    新蜂团队:俄罗斯方块界面设计给人眼前一亮的感觉,很喜欢他们界面的颜色搭配.功能上实现了俄罗斯方块的基本功能,并且没有bug.最重要的是游戏有自己的创新点在里面,很喜欢游戏的瞄准功能.总的来说项目完成的 ...

  2. ODP方式,大批量数据写入ORACLE数据库

    项目中在同步数据的时候,需要把获得的数据DataTable,写入oracle数据库 因为System.Data.OracleClient写入方式写入大批量数据特别慢,改用Oracle.DataAcce ...

  3. 关于新版ADT创建项目时出现appcompat_v7的问题

    做Android开发的朋友最近会发现,更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容.并且是创建一个新的内容就会出现.这到底是怎么回事呢?原来appcompa ...

  4. 《Linux内核设计与实现》CHAPTER13阅读梳理

    <Linux内核设计与实现>第13章阅读总结 [edited by 5216lwr] 一.虚拟文件系统概述 1.虚拟文件系统 (也称作虚拟文件交换或VF)作为内核子系统,为用户空间程序提供 ...

  5. C++求一个十进制的二进制中1的个数

    int oneNumInBinary(int n){ ; while(n){ n = n&(n-); cnt++; } return cnt; }

  6. 使用HttpClient连接池进行https单双向验证

    https单双向验证环境的搭建参见:http://www.cnblogs.com/YDDMAX/p/5368404.html 一.单向握手 示例程序: package com.ydd.study.he ...

  7. web前端开发和后端开发有什么区别?

    web前端分为网页设计师.网页美工.web前端开发工程师 首先网页设计师是对网页的架构.色彩以及网站的整体页面代码负责 网页美工只针对UI这块儿的东西,比如网站是否做的漂亮 web前端开发工程师是负责 ...

  8. 设置glassfish开启自动domain

    1-在/etc/rc.local中配置开机自启动 su - sumapay25 -c "/opt/glassfish.sh start 1" 2-/opt/glassfish.sh ...

  9. jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据

    jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据 这个是jQuery 的底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等. $.ajax() ...

  10. ThinkPHP3.1快速入门(1)基础

    学习网址:http://www.thinkphp.cn/document/60.html