所使用的API Store是 聚合数据 使用 手机归属地查询 功能
因百度的apistore.baidu.com 2016年12月开始至今天不接受新用户调取。聚合数据一个接口免费。
一、通过谷歌的google-gson方法解析聚合数据得到的返回结果json代码,使用的jar包是gson-2.7.jar。
(1)Add Build Path之后Gson gson=new Gson();// ctrl+shift+o使用正常。
(2)JsonRootBean root=gson.fromJson(result, JsonRootBean.class);//result是聚合数据返回的json代码,类型是字符串,JsonRootBean.class是把字符串转成此类
//注意.fromJson()这个方法有很多重载,要选择合适自己的参数
(3)这是可以使用root这个对象直接调用json中的内容了 System.out.println("公司:"+root.getResult().getCompany());
二、通过jackson方法解析聚合数据得到的返回结果json代码,使用的jar包是/TestJuHe/lib/jackson-core-2.2.3.jar;/TestJuHe/lib/jackson-annotations-2.2.3.jar;/TestJuHe/lib/jackson-databind-2.2.3.jar
(1) ObjectMapper mapper = new ObjectMapper(); // ctrl+shift+o使用正常。
(2) JsonRootBean root = mapper.readValue(result, JsonRootBean.class);//注意.readValue()这个方法有很多重载,要选择合适自己的参数
(3) System.out.println("公司:"+root.getResult().getCompany());//使用root这个对象直接调用json中的内容附聚合数据接口代码:
import java.io.BufferedReader;
import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;import com.google.gson.Gson;
import net.sf.json.JSONObject;
/***手机号码归属地调用示例代码 - 聚合数据*在线接口文档:http://www.juhe.cn/docs/11**/public class JuheDemo { public static final String DEF_CHATSET = "UTF-8"; public static final int DEF_CONN_TIMEOUT = 30000; public static final int DEF_READ_TIMEOUT = 30000; public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"; //配置您申请的KEY public static final String APPKEY ="c3abbaf3e5b9526fa4959e1edf9716b7";//这是我的key,只对当前手机号这个有效 //1.手机归属地查询 public static void getRequest1(){ String result =null; String url ="http://apis.juhe.cn/mobile/get";//请求接口地址 Map params = new HashMap();//请求参数 params.put("phone","18612626494");//需要查询的手机号码或手机号码前7位 params.put("key",APPKEY);//应用APPKEY(应用详细页查询) params.put("dtype","json");//返回数据的格式,xml或json,默认json try { //申请聚合得到的返回结果 result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object); //手动// JSONObject json=object.getJSONObject("result");// System.out.println(json.getString("province"));// System.out.println(object.getInt("resultcode")); //自动// ObjectMapper mapper = new ObjectMapper(); // JsonRootBean root = mapper.readValue(result, JsonRootBean.class);// System.out.println(root); // System.out.println("公司:"+root.getResult().getCompany()); //通过 gson 方法 Gson gson=new Gson(); JsonRootBean root=gson.fromJson(result, JsonRootBean.class); System.out.println("公司:"+root.getResult().getCompany()); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { getRequest1(); } /** * * @param strUrl 请求地址 * @param params 请求参数 * @param method 请求方法 * @return 网络请求字符串 * @throws Exception */ public static String net(String strUrl, Map params,String method) throws Exception { HttpURLConnection conn = null; BufferedReader reader = null; String rs = null; try { StringBuffer sb = new StringBuffer(); if(method==null || method.equals("GET")){ strUrl = strUrl+"?"+urlencode(params); } URL url = new URL(strUrl); conn = (HttpURLConnection) url.openConnection(); if(method==null || method.equals("GET")){ conn.setRequestMethod("GET"); }else{ conn.setRequestMethod("POST"); conn.setDoOutput(true); } conn.setRequestProperty("User-agent", userAgent); conn.setUseCaches(false); conn.setConnectTimeout(DEF_CONN_TIMEOUT); conn.setReadTimeout(DEF_READ_TIMEOUT); conn.setInstanceFollowRedirects(false); conn.connect(); if (params!= null && method.equals("POST")) { try { DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.writeBytes(urlencode(params)); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } InputStream is = conn.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET)); String strRead = null; while ((strRead = reader.readLine()) != null) { sb.append(strRead); } rs = sb.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { reader.close(); } if (conn != null) { conn.disconnect(); } } return rs; } //将map型转为请求参数型 public static String urlencode(Map<String,String> data) { StringBuilder sb = new StringBuilder(); for (Map.Entry i : data.entrySet()) { try { sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return sb.toString(); }}