微信小程序之手机归属地查询
微信小程序之手机归属地查询
需求描述

API申请和小程序设置
API申请
第一步:完整账号注册
我们需要来到如下网站,注册账号:万维易源
第二步:账号注册完成以后,点击右上角的控制台信息。

第三步:在控制台界面选择接口使用者-appKey管理

第四步:在appKey管理界面,点击添加按钮,在应用中输入自己想要的名字,白名单非必填,可调用接口搜索手机可以查询到对应的如下信息,选择以后点击“立即创建”。

第五步:设置以后,我们便可以看到我们常见的appKey了。

小程序设置
在小程序中,我们应用的API不是随便能够使用的,是需要在小程序中进行设置才能够使用。
第一步:登录小程序管理后台:微信公众平台
第二步:在小程序后台点击管理-开发管理中的开发设置

第三步:在开发设置中鼠标滚轮往下拉找到服务器域名设置,然后点击右侧修改按钮,在request合法域名中讲我们设置的需要的api加入进去,结果如下

至此,我们的API Key的申请以及小程序的设置已经完成,我们可以正式开发我们的业务。
业务实现
代码框架
我们的业务代码框架如下

代码实现
app.json实现
总体基调设置如下
{"pages": ["pages/index/index","pages/logs/logs" ],"window": {"backgroundTextStyle": "dark","navigationBarBackgroundColor": "#FFFFFF","navigationBarTitleText": "手机号码归属地查询","navigationBarTextStyle": "black"},"sitemapLocation": "sitemap.json"
}
util.js实现
const formatTime = date => {const year = date.getFullYear()const month = date.getMonth() + 1const day = date.getDate()const hour = date.getHours()const minute = date.getMinutes()const second = date.getSeconds()return [year, month, day].map(formatNumber).join('') + '' + [hour, minute, second].map(formatNumber).join('')
}const formatNumber = n => {n = n.toString()return n[1] ? n : '0' + n
}module.exports = {formatTime: formatTime
}
index.wxml实现
界面布局实现
<!--pages/index/index.wxml-->
<view class='tel'><view class='input'><input type='number'placeholder='请输入查询的手机号'bindinput='bindInput'></input></view><view class='button'><button bindtap='bindSearch'>查询</button></view><view class='info'><text>温馨提示:查询结果仅供参考,以当地营业厅查询结果为</text></view><view class='result_caption'><text>{{ret_code}}</text></view><view class='result' hidden='{{hidden}}'><view class='row bg'>所查号码</view><view class='row bg'>{{number}}</view><view class='row'>归属省</view><view class='row'>{{prov}}</view><view class='row bg'>归属地区</view><view class='row bg'>{{city}}</view><view class='row'>运营商</view><view class='row'>{{name}}</view><view class='row bg'>城市编码</view><view class='row bg'>{{cityCode}}</view><view class='row'>邮政编码</view><view class='row'>{{postCode}}</view></view>
</view>
index.wxss实现
界面样式实现
/* pages/index/index.wxss */
.tel {width: 70%;margin: 0 auto;font-size: 30rpx;
}
.tel view {margin: 15rpx 0;
}
.input input {border: 1rpx solid #eee;background-color: #eee;padding: 18rpx;border-radius: 8rpx;color: #666;
}
.button button {background-color: #0080ff;color: white;
}
.info text {color: #999;font-size: 24rpx;
}
.result_caption text {color: #0080ff;
}
.result {display: flex;flex-wrap: wrap;color: #666;border: 1rpx solid #999;
}
.result .row {flex-basis: 50%;box-sizing: border-box;margin: 0;padding: 10rpx;
}
.result .bg {background-color: #eee;
}
index.js实现
业务实现如下
// pages/index/index.js
const util = require('../../utils/util.js');
Page({/*** 页面的初始数据*/data: {//APPIDappid: '上述API申请的ID',//密钥sign: '上述API申请的签名',//当前查询的时间timesTamp : util.formatTime(new Date()),//手机号码number : '',//默认隐藏hidden:true,//省份prov: '',//城市city: '',//卡类型name: '',//判断ret_code: '',},//输入手机号bindInput : function (e) {//查询得到手机号this.setData({number : e.detail.value});},//查询号码bindSearch : function (e) {var that = this;//请求wx.request({url: 'https://route.showapi.com/6-1?num=' + that.data.number + '&showapi_appid=' + that.data.appid + '&showapi_timestamp=' + that.data.timesTamp + '&showapi_sign=' + that.data.sign,success : function (e) {//获取归属地数据var result = e.data.showapi_res_body;//判断手机号码是否合法if (result.ret_code == -2) {that.setData({ret_code: '对不起,您查询的号码有误!',hidden : true});} else {that.setData({ret_code: '结果如下:',hidden: false,prov: result.prov,city: result.city,name: result.name,postCode: result.postCode,cityCode: result.cityCode});}}})},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})
我们可以看到通过API调用返回的结果如下

至此我们完成手机归属地的开发内容。
相关文章:
微信小程序之手机归属地查询
微信小程序之手机归属地查询 需求描述 API申请和小程序设置 API申请 第一步:完整账号注册 我们需要来到如下网站,注册账号:万维易源 第二步:账号注册完成以后,点击右上角的控制台信息。 第三步:在控制…...
ElementUI 问题清单
1、form 下面只有一个 input 时回车键刷新页面 原因是触发了表单默认的提交行为,给el-form 加上submit.native.prevent就行了。 <el-form inline submit.native.prevent><el-form-item label"订单号"><el-inputv-model"query.order…...
DVWA靶场——XSS(Stored)
一,Stored XSS 漏洞详解 存储型跨站脚本攻击(Stored XSS,或称为 Persistent XSS) 是一种常见的跨站脚本攻击(XSS)类型,它通过将恶意脚本(通常是 JavaScript 代码)直接存储…...
Spring框架中的Bean是线程安全的吗?
概述 在Java开发中,Spring框架是一个广泛使用的轻量级控制反转(IoC)和面向切面(AOP)容器框架。它简化了企业级应用的开发,提供了丰富的功能,如依赖注入、事务管理、消息传递等。在Spring框架中…...
uniapp远程摄像头流界面上显示
用到的插件:dplayer、hls dplayer官网:dplayer dplayer官网npm安装的是最新版本(1.27.1),真机运行异常了,可以安装历史版本 dplayer历史版本 远程摄像头视频流格式:m3u8 可以用来测试的视频流&a…...
elasticSearch(一):elasticSearch介绍
一、搜索引擎 搜索引擎的核心目的是帮助用户以最小的成本才海量数据中找到最想要的结果。糟糕的搜索引擎往往会所问非所答,用户查了半天也得不到自己想要的,好的搜索引擎往往第一页就是用户最想要的结果。而目前判断搜索引擎好坏一般是从召回率、精确率…...
基于 RWKV 的视觉语言模型 VisualRWKV 被 COLING 2025 接收!
基于 RWKV 的视觉语言模型 VisualRWKV 被 COLING 2025 接收! COLING,国际计算语言学会议(International Conference on Computational Linguistics),是自然语言处理和计算语言学领域的顶级国际会议(CCF 推…...
输出九九乘法表:JAVA
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 输出九九乘法表。 具体的输出格式见样例,其中每一项乘法的结果需要占据2个字符宽度,不同的乘法结果之间用1个空格间隔。 举例: 1*4_4_2*4_8_3*412_4*416 上…...
kube-proxy的iptables工作模式分析
系列文章目录 iptables基础知识 文章目录 系列文章目录前言一、kube-proxy介绍1、kube-proxy三种工作模式2、iptables中k8s相关的链 二、kube-proxy的iptables模式剖析1.集群内部通过clusterIP访问到pod的流程1.1.流程分析 2.从外部访问内部service clusterIP后端pod的流程2.1…...
xiaolin coding 图解 MySQL笔记——锁篇
1. 全局锁是怎么用的? flush tables with read lock 执行以后,整个数据库就处于只读状态了,这时其他线程执行对数据的增删改操作(insert、delete、update);对表结构的更改操作(alter table、dr…...
11-SpringCloud Alibaba-Seata处理分布式事务
一、Seata基本介绍 官网:https://seata.apache.org/zh-cn/ Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 我…...
更换 Git 项目的远程仓库地址(五种方法)
更换 Git 项目的远程仓库地址有几种不同的方法,下面是详细的步骤和一些额外的方法来完成这个任务。 方法1:使用 git remote set-url 这是最直接的方法。假设你想要更改名为 origin 的远程仓库地址到新的 URL。 查看当前的远程仓库配置: git…...
3大模块助力学生会视频自动评审系统升级
一、项目背景 传统的学生会视频作品或电子申请材料评审由老师线下逐一面审完成。面对大量学生提交的作品,评审效率低、耗时长,且主观性较强。为此,客户希望开发一个基于AI的线上自动面审系统,从语法正确性、演讲流利度和发音准确…...
鸿蒙开发——使用ArkTs处理XML文本
1、概 述 XML(可扩展标记语言)是一种用于描述数据的标记语言,旨在提供一种通用的方式来传输和存储数据,特别是Web应用程序中经常使用的数据。XML并不预定义标记。因此,XML更加灵活,并且可以适用于广泛的应…...
【Linux】文件查找 find grep
文章目录 1. 引言简介Linux文件系统的基本概念为什么文件查找命令在日常使用中非常重要 2. find 命令基本用法常见选项和参数高级用法和技巧实际示例 3. locate 命令如何工作与find命令的区别安装和使用locate实际示例 4. grep 结合文件查找使用grep进行内容查找结合find命令使…...
Go学习笔记之运算符号
算数运算符 运算符描述相加-相减*相乘/相除%求余自增–自减 代码示例: package mainimport "fmt"func main() {// 算数运算符a : 1b : 2fmt.Println(a b) // 加 3fmt.Println(a - b) // 减 -1fmt.Println(a * b) // 乘 2fmt.Println(a / b) // 除 0fm…...
npm : 无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本
要以管理员身份打开PowerShell,请按照以下步骤操作: 在Windows搜索框中查找PowerShell: 在任务栏上,点击左下角的Windows徽标(或按Win S键)以打开搜索框。输入“PowerShell”以查找PowerShell应用程序。右…...
YOLOv8-ultralytics-8.2.103部分代码阅读笔记-torch_utils.py
torch_utils.py ultralytics\utils\torch_utils.py 目录 torch_utils.py 1.所需的库和模块 2.def torch_distributed_zero_first(local_rank: int): 3.def smart_inference_mode(): 4.def autocast(enabled: bool, device: str "cuda"): 5.def get_cpu_i…...
Java中的数据存储结构解析与应用
一、引言 在Java编程中,数据存储结构是程序设计的基础。合理选择和使用数据结构可以提高程序的性能和可维护性。本文将带您了解Java中的各种数据存储结构,并探讨其优缺点及适用场景。 二、基本数据类型 Java提供了8种基本数据类型,分别是b…...
【链表】力扣 141. 环形链表
一、题目 二、思路 龟兔进行赛跑 龟的速度是 1,兔的速度是 2龟兔从同一起点出发,若 龟追上兔 则说明 有环 存在;若追不上,则说明无环。 三、代码 /*** Definition for singly-linked list.* class ListNode {* int val;* …...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...
python打卡第47天
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图,展示模…...
