java使用淘寶API讀寫json實現(xiàn)手機(jī)歸屬地查詢功能代碼
一般查詢手機(jī)歸屬地內(nèi)容應(yīng)該很好用json格式保存,在網(wǎng)上找到了淘寶的歸屬地API,并下了處理json相關(guān)的jar包,做了這個手機(jī)歸屬地查詢功能
package com.think.java;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class TestMobileCity {
/**
* 測試手機(jī)號碼是來自哪個城市的,利用淘寶的API
* @param mobileNumber 手機(jī)號碼
* @return
* @throws MalformedURLException
*/
public static String calcMobileCity(String mobileNumber) throws MalformedURLException{
String jsonString = null;
JSONArray array = null;
JSONObject jsonObject = null;
String urlString = "http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=" + mobileNumber;
StringBuffer sb = new StringBuffer();
BufferedReader buffer;
URL url = new URL(urlString);
try{
InputStream in = url.openStream();
// 解決亂碼問題
buffer = new BufferedReader(new InputStreamReader(in,"gb2312"));
String line = null;
while((line = buffer.readLine()) != null){
sb.append(line);
}
in.close();
buffer.close();
// System.out.println(sb.toString());
jsonString = sb.toString();
// 替換掉“__GetZoneResult_ = ”,讓它能轉(zhuǎn)換為JSONArray對象
jsonString = jsonString.replaceAll("^[__]\\w{14}+[_ = ]+", "[");
// System.out.println(jsonString+"]");
String jsonString2 = jsonString + "]";
// 把STRING轉(zhuǎn)化為json對象
array = JSONArray.fromObject(jsonString2);
// 獲取JSONArray的JSONObject對象,便于讀取array里的鍵值對
jsonObject = array.getJSONObject(0);
}catch(Exception e){
e.printStackTrace();
}
return jsonObject.getString("province");
}
/**
* 計算多個號碼的歸屬地
* @param mobileNumbers 號碼列表
* @return
* @throws MalformedURLException
*/
public static JSONObject calcMobilesCities(List<String> mobileNumbers) throws MalformedURLException{
JSONObject jsonNumberCity = new JSONObject();
for(String mobileNumber : mobileNumbers){
jsonNumberCity.put(mobileNumber, calcMobileCity(mobileNumber)); ;
}
return jsonNumberCity;
}
public static void main(String[] args) throws Exception{
String testMobileNumber = "1881758452";
System.out.println(calcMobileCity(testMobileNumber));
List<String> mobileList = new ArrayList<String>();
for(int i = 1350345; i < 1350388; i++){
mobileList.add(String.valueOf(i));
}
System.out.println(calcMobilesCities(mobileList).toString());
}
}
相關(guān)文章
Java static關(guān)鍵字詳細(xì)介紹與用法總結(jié)
這篇文章主要介紹了Java中static關(guān)鍵字的作用和用法詳細(xì)介紹,主要講了靜態(tài)方法、靜態(tài)變量、靜態(tài)類、static和final一塊用等內(nèi)容。需要的朋友可以參考下2017-04-04SpringBoot事件機(jī)制相關(guān)知識點匯總
這篇文章主要介紹了SpringBoot事件機(jī)制相關(guān)知識點匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09詳解Idea 2019.2 安裝lombok插件失效問題解決
這篇文章主要介紹了詳解Idea 2019.2 安裝lombok插件失效問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10spring boot攔截器注入不了java bean的原因
這篇文章主要介紹了spring boot攔截器注入不了java bean的原因,幫助大家更好的理解和學(xué)習(xí)spring boot框架,感興趣的朋友可以了解下2020-11-11Java 實戰(zhàn)范例之進(jìn)銷存管理系統(tǒng)的實現(xiàn)
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實現(xiàn)一個前后端分離的進(jìn)銷存管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11