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

前天无意间在网上看到百度ApiStore,然后好奇就进去看了看。正好最近在某博培训Android,刚学到java基础。抱着锻炼的心态选择手机号码归属地查询api进行练手。api地址 (http://apis.baidu.com/apistore/mobilephoneservice/mobilephone)。百度官方已经给出请求示例 。我们只需要对请求结果json进行解析就可以。

Java请求示例:

 1 String httpUrl = "http://apis.baidu.com/apistore/mobilephoneservice/mobilephone";
 2 String httpArg = "tel=15846530170";
 3 String jsonResult = request(httpUrl, httpArg);
 4 System.out.println(jsonResult);
 5
 6 /**
 7  * @param urlAll
 8  *            :请求接口
 9  * @param httpArg
10  *            :参数
11  * @return 返回结果
12  */
13 public static String request(String httpUrl, String httpArg) {
14     BufferedReader reader = null;
15     String result = null;
16     StringBuffer sbf = new StringBuffer();
17     httpUrl = httpUrl + "?" + httpArg;
18
19     try {
20         URL url = new URL(httpUrl);
21         HttpURLConnection connection = (HttpURLConnection) url
22                 .openConnection();
23         connection.setRequestMethod("GET");
24         // 填入apikey到HTTP header
25         connection.setRequestProperty("apikey",  "您自己的apikey");
26         connection.connect();
27         InputStream is = connection.getInputStream();
28         reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
29         String strRead = null;
30         while ((strRead = reader.readLine()) != null) {
31             sbf.append(strRead);
32             sbf.append("\r\n");
33         }
34         reader.close();
35         result = sbf.toString();
36     } catch (Exception e) {
37         e.printStackTrace();
38     }
39     return result;
40 }

我们要做的是进行对请求返回结果result处理,百度给出了返回结果为json,那么就要对json进行解析输出。

百度给出的json返回示例:

1 {
2 errNum: 0,
3 errMsg: "success",
4 retData: {
5    telString: "15846530170", //手机号码
6    province: "黑龙江",    //省份
7    carrier: "黑龙江移动"  //运营商
8   }
9 }

对json解析需要用到json-lib.jar包,网上可以百度到。

json解析核心代码:

1 JSONObject obj = JSONObject.fromObject(jsonResult1); 2 String errNum = obj.getString("errNum");

演示示例:

 1 package day02;
 2
 3 import java.io.BufferedReader;
 4 import java.io.InputStream;
 5 import java.io.InputStreamReader;
 6 import java.net.HttpURLConnection;
 7 import java.net.URL;
 8 import net.sf.json.JSONObject;
 9
10 public class Test11 {
11
12     /**
13      * 查询手机号码归属地
14      * @param args
15      */
16     public static void main(String[] args) {
17         // TODO Auto-generated method stub
18
19         String httpUrl = "http://apis.baidu.com/apistore/mobilephoneservice/mobilephone";
20         String httpArg = "tel=15768798455";
21         String jsonResult1 = request(httpUrl, httpArg);
22         System.out.println(jsonResult1);
23         JSONObject obj = JSONObject.fromObject(jsonResult1);
24          String errNum = obj.getString("errNum");
25          System.out.println(errNum);
26          String errMsg = obj.getString("errMsg");
27          System.out.println(errMsg);
28          String retData = obj.getString("retData");
29          JSONObject obj2 = JSONObject.fromObject(retData);
30          String telString = obj2.getString("telString");
31          String province = obj2.getString("province");
32          String carrier = obj2.getString("carrier");
33          System.out.println("你查询号码:"+telString+"\n"+"归属地:"+province+"\n"+"运营商:"+carrier);
34
35     }
36
37     /**
38      * @param urlAll
39      *            :请求接口
40      * @param httpArg
41      *            :参数
42      * @return 返回结果
43      */
44     public static String request(String httpUrl, String httpArg) {
45         BufferedReader reader = null;
46         String result = null;
47         StringBuffer sbf = new StringBuffer();
48         httpUrl = httpUrl + "?" + httpArg;
49
50         try {
51             URL url = new URL(httpUrl);
52             HttpURLConnection connection = (HttpURLConnection) url
53                     .openConnection();
54             connection.setRequestMethod("GET");
55             // 填入apikey到HTTP header
56             connection.setRequestProperty("apikey",
57                     "你的百度api秘钥");
58             connection.connect();
59             InputStream is = connection.getInputStream();
60             reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
61             String strRead = null;
62             while ((strRead = reader.readLine()) != null) {
63                 sbf.append(strRead);
64                 sbf.append(strRead + " ");
65             }
66             reader.close();
67             result = sbf.toString();
68         } catch (Exception e) {
69             e.printStackTrace();
70         }
71         return result;
72     }
73
74 }

输出结果:

1 {"errNum":0,"errMsg":"success","retData":{"telString":"15737954118","province":"\u6cb3\u5357","carrier":"\u6cb3\u5357\u79fb\u52a8"}}{"errNum":0,"errMsg":"success","retData":{"telString":"15737954118","province":"\u6cb3\u5357","carrier":"\u6cb3\u5357\u79fb\u52a8"}}
2 错误码:0
3 错误码返回:success
4 你查询号码:15737954118
5 归属地:河南
6 运营商:河南移动

自此百度手机号码归属地api体验成功结束,也是实训期间的练手。

时间: 2024-10-12 16:55:07

百度手机号码归属地查询api与返回json处理的相关文章

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

淘宝网 API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443参数: tel:手机号码 返回:JSON 拍拍 API地址: http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback参数: mobile:手机号码

手机号码归属地查询api

淘宝网 API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回:JSON 拍拍 API地址: http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback 参数: mobile:手机

手机号码归属地查询免费api接口代码

根据手机号码查询用户的卡类型.运营商.归属地.区域等信息. 手机归属地实体类 package org.wx.xhelper.model; /** * 手机归属地 * @author wangxw * @version 1.0 * @date Jul 9, 2014 4:03:04 PM */ public class PhoneBelong { // 电话号码 private String phone; // 手机号码所在地区区号 private String area; // 号码卡类型 pr

【原创】Java实现手机号码归属地查询

网络上已经有很多的手机号码归属地查询的API接口,但是这些接口总是有一些大大小小的缺陷. 总结一下这些缺陷: 1.要直接将它的搜索框链接形式粘到自己的页面,点击查询的时候还要跳转到他们的网站来展示归属地结果 2.提供接口的API,一般都要求付费,或者一天只有免费的限定查询次数 3.有些博客文档中的API已经过于老旧,尝试的时候,已经404Not Found的了 所以写篇博客,供正在做手机归属地查询的小伙伴参考. 思路: ->我找到一个拍拍网的接口,可以通过curl直接传手机号码来进行查询,并且会

Android中手机号码归属地查询实现

这部分是昨天学习的,但是因为眼睛超负荷所以拖到现在,以后要合理规划时间. 目前手机里面的号码归属地查询主要是通过两种方式:1.联网查询,2.匹配本机归属地数据库. 我认为两种结合方式最好,在本地数据库中匹配不到的在进行联网查询,能大大增加匹配效果,并且不用过于增加本地数据库容量而增大安装包大小. 步骤:1.开启软件的时候把数据库从assets目录拷贝到files目录下,如果已存在,则不用重新拷贝. 2.实现界面. 3.实现工具类PhoneAddressUtils的getPhoneAddress(

本地的手机号码归属地查询-oracle数据

最近做的项目中,有个功能是手机归属地查询,因为项目要在内网下运行,所以不能用提供的webservice,只好在网上找手机归属地的数据,很多都是access的,我们的项目是用oracle,只好自己转吧,转过来的提供到网上,方便大家使用.数据还是比较新的,是2014年的. 下面是部分代码,如果需要全部代码,可以直接下载. TabMobileServiceImpl.java package com.zhouyu.service.impl; import java.util.List; import o

java 手机号码归属地查询

下面是利用第三方接口实现手机号码归属地查询 (复制请标明出处或留言) package com.test.yyc; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import ja

Java调用免费的WebService示例【天气预报】【国内手机号码归属地查询】

1.免费的WebService地址:http://www.webxml.com.cn/zh_cn/index.aspx 提供了例如:天气预报,手机归属地查询等很多Web服务. 2.调用天气预报服务示例: 使用JDK自带的wsimport命令生成客户端代码: wsimport -keep http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl 发现抛出如下异常: 后来在网上找到了http://blog.sina.com.cn/

Web Api 中返回JSON的正确做法

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在使用Web Api的时候,有时候只想返回JSON:实现这一功能有多种方法,本文提供两种方式,一种传统的,一种作者认为是正确的方法. JSON in Web API – the formatter based approach 只支持JSON最