手机号码归属地
聚合数据 官方文档
根据手机号码或手机号码的前7位,查询手机号码归属地信息,如省份 、城市、运营商等
基本说明:
接口地址:http://apis.juhe.cn/mobile/get
返回格式:json
请求方式:get
请求示例:http://apis.juhe.cn/mobile/get?phone=13429667914&key=您申请的KEY
请求参数说明:
名称 类型 必填 说明
phone int 必填 需要查询的手机号码或手机号码前7位
key string 必填 在个人中心->我的数据,接口名称上方查看 扫码关注公众号
dtype string 选填 返回数据的格式,xml或json,默认json
返回参数说明:
名称 类型 说明
error_code int 返回码
reason string 返回说明
result string 返回结果集
province string 省份
city string 城市,(北京、上海、重庆、天津直辖市可能为空)
areacode string 区号,(部分记录可能为空)
zip string 邮编,(部分记录可能为空)
company string 运营商
JSON返回示例:
{
	"resultcode": "200",
	"reason": "Return Successd!",
	"result": {
		"province": "浙江",
		"city": "杭州",
		"areacode": "0571",
		"zip": "310000",
		"company": "中国移动",
		"card": ""
	}
}
服务级错误码参照
错误码 说明
201103 查询无结果
201101 手机号码不能为空
201102 错误的手机号码
10001 错误的请求KEY
10002 该KEY无请求权限
10003 KEY过期
10004 错误的OPENID
10005 应用未审核超时,请提交认证
10007 未知的请求源
10008 被禁止的IP
10009 被禁止的KEY
10011 当前IP请求超过限制
10012 请求超过次数限制
10013 测试KEY超过请求限制
10014 系统内部异常(调用充值类业务时,请务必联系客服或通过订单查询接口检测订单,避免造成损失)
10020 接口维护
10021 接口停用
完整教学代码示例
package main

import (
	"io/ioutil"
	"net/http"
	"net/url"
	"fmt"
	"encoding/json"
)

func main() {
	//请求地址
	juheURL := "http://apis.juhe.cn/mobile/get"

	//初始化参数
	param := url.Values{}

	//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
	param.Set("phone", "13429667914") //需要查询的手机号码
	param.Set("key", "您申请的ApiKey")  //应用APPKEY(应用详细页查询)

	//发送请求
	data, err := Get(juheURL, param)
	if err != nil {
		fmt.Errorf("请求异常,错误信息:
%v", err)
	} else {
		var netReturn map[string]interface{}
		json.Unmarshal(data, &netReturn)
		
		fmt.Println(netReturn)
	}

}

// get 网络请求
func Get(apiURL string, params url.Values) (rs []byte, err error) {
	var Url *url.URL
	Url, err = url.Parse(apiURL)
	if err != nil {
		fmt.Printf("解析url错误:
%v", err)
		return nil, err
	}
	//如果参数中有中文参数,这个方法会进行URLEncode
	Url.RawQuery = params.Encode()
	resp, err := http.Get(Url.String())
	if err != nil {
		fmt.Println("err:", err)
		return nil, err
	}
	defer resp.Body.Close()
	return ioutil.ReadAll(resp.Body)
}

// post 网络请求 ,params 是url.Values类型
func Post(apiURL string, params url.Values) (rs []byte, err error) {
	resp, err := http.PostForm(apiURL, params)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	return ioutil.ReadAll(resp.Body)
}
<?php
$url = "http://apis.juhe.cn/mobile/get";
$params = array(
    "ip" => "13429667914",//需要查询的手机号码
    "key" => "您申请的ApiKey",//应用APPKEY(应用详细页查询)
);
$paramstring = http_build_query($params);
$content = juheCurl($url, $paramstring);
$result = json_decode($content, true);
if ($result) {
    var_dump($result);
} else {
    //请求异常
}

/**
 * 请求接口返回内容
 * @param  string $url [请求的URL地址]
 * @param  string $params [请求的参数]
 * @param  int $ipost [是否采用POST形式]
 * @return  string
 */
function juheCurl($url, $params = false, $ispost = 0)
{
    $httpInfo = array();
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'JuheData');
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    if ($ispost) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_URL, $url);
    } else {
        if ($params) {
            curl_setopt($ch, CURLOPT_URL, $url.'?'.$params);
        } else {
            curl_setopt($ch, CURLOPT_URL, $url);
        }
    }
    $response = curl_exec($ch);
    if ($response === FALSE) {
        //echo "cURL Error: " . curl_error($ch);
        return false;
    }
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
    curl_close($ch);
    return $response;
}
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 net.sf.json.JSONObject;


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";

	public static void mobileQuery(){
		String result =null;
		String url ="http://apis.juhe.cn/mobile/get";//请求接口地址
		Map params = new HashMap();//请求参数
			params.put("phone","13429667914");//需要查询的手机号码
			params.put("key","您申请的ApiKey");//应用APPKEY(应用详细页查询)
		try {
			result = net(url, params, "GET");
			JSONObject object = JSONObject.fromObject(result);
			if(object.getInt("error_code")==0){
				System.out.println(object.get("result"));
			}else{
				System.out.println(object.get("error_code")+":"+object.get("reason"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {

	}
	
	/**
	 *
	 * @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();
	}
}
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json, urllib
from urllib import urlencode

url = "http://apis.juhe.cn/mobile/get"
params = {
    "phone": "13429667914",  # 需要查询的手机号码
    "key": "您申请的ApiKey",  # 应用APPKEY(应用详细页查询)
}
params = urlencode(params)
f = urllib.urlopen(url, params)
content = f.read()
res = json.loads(content)
if res:
    print(res)
else:
    print("请求异常")
//node request模块安装命令:npm install request
var request = require('request');
var querystring = require('querystring');

var queryData = querystring.stringify({
	'phone': '13429667914', //需要查询的IP地址
	'key': '您申请的ApiKey'
});

var queryUrl = 'http://apis.juhe.cn/mobile/get?'+queryData;

request(queryUrl, function (error, response, body) {
	if (!error && response.statusCode == 200) {
		console.log(body) // 打印接口返回内容
		
		var jsonObj = JSON.parse(body); // 解析接口返回的JSON内容
		console.log(jsonObj)
	} else {
		console.log('请求异常');
	}
})
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using Xfrog.Net;
using System.Diagnostics;
using System.Web;


namespace ConsoleAPI
{
	class Program
	{
		static void Main(string[] args)
		{
			string url = "http://apis.juhe.cn/mobile/get";

			var parameters = new Dictionary<string, string>();

			parameters.Add("phone" , "13429667914"); //需要查询的手机号码
			parameters.Add("key", "您申请的ApiKey");//你申请的key

			string result = sendPost(url, parameters, "get");
			
			// 代码中JsonObject类下载地址:http://download.csdn.net/download/gcm3206021155665/7458439
			JsonObject newObj = new JsonObject(result);
			String errorCode = newObj["error_code"].Value;

			if (errorCode == "0")
			{
				Debug.WriteLine("成功");
				Debug.WriteLine(newObj);
			}
			else
			{
				//Debug.WriteLine("请求异常");
				Debug.WriteLine(newObj["error_code"].Value+":"+newObj["reason"].Value);
			}


		}

		/// <summary>
		/// Http (GET/POST)
		/// </summary>
		/// <param name="url">请求URL</param>
		/// <param name="parameters">请求参数</param>
		/// <param name="method">请求方法</param>
		/// <returns>响应内容</returns>
		static string sendPost(string url, IDictionary<string, string> parameters, string method)
		{
			if (method.ToLower() == "post")
			{
				HttpWebRequest req = null;
				HttpWebResponse rsp = null;
				System.IO.Stream reqStream = null;
				try
				{
					req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = method;
					req.KeepAlive = false;
					req.ProtocolVersion = HttpVersion.Version10;
					req.Timeout = 60000;
					req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
					byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));
					reqStream = req.GetRequestStream();
					reqStream.Write(postData, 0, postData.Length);
					rsp = (HttpWebResponse)req.GetResponse();
					Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
					return GetResponseAsString(rsp, encoding);
				}
				catch (Exception ex)
				{
					return ex.Message;
				}
				finally
				{
					if (reqStream != null) reqStream.Close();
					if (rsp != null) rsp.Close();
				}
			}
			else
			{
				//创建请求
				HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8"));
 
				//GET请求
				request.Method = "GET";
				request.ReadWriteTimeout = 5000;
				request.ContentType = "text/html;charset=UTF-8";
				HttpWebResponse response = (HttpWebResponse)request.GetResponse();
				Stream myResponseStream = response.GetResponseStream();
				StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

				//返回内容
				string retString = myStreamReader.ReadToEnd();
				return retString;
			}
		}

		/// <summary>
		/// 组装普通文本请求参数。
		/// </summary>
		/// <param name="parameters">Key-Value形式请求参数字典</param>
		/// <returns>URL编码后的请求数据</returns>
		static string BuildQuery(IDictionary<string, string> parameters, string encode)
		{
			StringBuilder postData = new StringBuilder();
			bool hasParam = false;
			IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
			while (dem.MoveNext())
			{
				string name = dem.Current.Key;
				string value = dem.Current.Value;
				// 忽略参数名或参数值为空的参数
				if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value)
				{
					if (hasParam)
					{
						postData.Append("&");
					}
					postData.Append(name);
					postData.Append("=");
					if (encode == "gb2312")
					{
						postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312")));
					}
					else if (encode == "utf8")
					{
						postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));
					}
					else
					{
						postData.Append(value);
					}
					hasParam = true;
				}
			}
			return postData.ToString();
		}
 
		/// <summary>
		/// 把响应流转换为文本。
		/// </summary>
		/// <param name="rsp">响应流对象</param>
		/// <param name="encoding">编码方式</param>
		/// <returns>响应文本</returns>
		static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
		{
			System.IO.Stream stream = null;
			StreamReader reader = null;
			try
			{
				// 以字符流的方式读取HTTP响应
				stream = rsp.GetResponseStream();
				reader = new StreamReader(stream, encoding);
				return reader.ReadToEnd();
			}
			finally
			{
				// 释放资源
				if (reader != null) reader.Close();
				if (stream != null) stream.Close();
				if (rsp != null) rsp.Close();
			}
		}
	}
}