java 调用 360 接口实现批量查询手机号码归属地

编程入门 行业动态 更新时间:2024-10-09 02:21:40

java 调用 360 接口实现批量查询<a href=https://www.elefans.com/category/jswz/34/1768318.html style=手机号码归属地"/>

java 调用 360 接口实现批量查询手机号码归属地

网上的手机号码归属地查询,要么限制查询条数,要么收费,于是找到一个 360 提供的查询 api

使用多线程异步查询,Future 确保查询结果顺序与输入顺序一致

核心 Controller

package com.example.phonenumber.controller;import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;@RestController
@RequestMapping("/api")
public class PhoneController {@Autowiredprivate RestTemplate restTemplate;private static final int THREAD_POOL_SIZE = 8;@GetMapping("/search")public String search() {String url = ".php?number=";String[] phoneNumberList = getPhoneNumberList();ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE);List<Future<Map<String, String>>> futures = new ArrayList<>();for (String number : phoneNumberList) {Future<Map<String, String>> future = executorService.submit(() -> processPhoneNumber(url, number));futures.add(future);}// 等待所有任务完成for (Future<Map<String, String>> future : futures) {try {Map<String, String> result = future.get();// 在这里,你可以将结果保存起来,比如放到一个 List 中System.out.println(result.get("number") + "\t" + result.get("province") + "\t" + result.get("city") + "\t" + result.get("sp"));} catch (InterruptedException | ExecutionException e) {e.printStackTrace(); // 在实际应用中需要适当处理异常}}executorService.shutdown();return "success";}// 调用接口查询private Map<String, String> processPhoneNumber(String url, String number) {String response = restTemplate.getForObject(url + number, String.class);JSONObject responseJson = JSONUtil.parseObj(response);Map<String, String> result = new HashMap<>();result.put("number", number);// 解析响应数据if (responseJson.getInt("code") == 0) {JSONObject dataJson = responseJson.getJSONObject("data");// 省份result.put("province", dataJson.getStr("province"));// 城市result.put("city", dataJson.getStr("city"));// 运营商result.put("sp", dataJson.getStr("sp"));} else {result.put("error", "电话号码有误");}return result;}// 电话号码列表,以逗号分隔private String[] getPhoneNumberList() {String phoneNumberStr ="15649408889," +"13333857377," +"18898135919," +"15037601625," +"15890350177," +"15890350177," +"13673379352," +"13673379352," +"13849159230," +"18937807559," +"15649408889," +"13333857377"; // 你的电话号码列表return phoneNumberStr.split(",");}
}

浏览器访问 http://localhost:8080/api/search

结果截图:

完整源码可下载

更多推荐

java 调用 360 接口实现批量查询手机号码归属地

本文发布于:2023-12-07 22:36:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1671805.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:手机号码   批量   归属地   接口   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!