调用第三方API ,实现手机号码归属地及运营商查询

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

运行结果:

中国电信

西双版纳

西双版纳,中国电信

代码:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class NewMobile {
	
	public static void main(String[] args) {
		
		System.out.println(NewMobile.getCarrier("18988176532"));
		System.out.println(NewMobile.getCity("18988176532"));
		System.out.println(NewMobile.getResult("18988176532"));
	}
	
	//得到归属地
	public static String getCity(String tel) {
		try{
			//获取返回结果
			String json = httpRequest(tel).toString();
			//拆分xml页面代码
			String[] a = json.split("att");
			String[] b = a[1].split(",");
			//归属地
			String city = b[2].replace(">", "").replace("</", "");
			return city;
		}catch(Exception e){
			return "暂无相关归属地信息!";
		}
	}
	
	//得到运营商
	public static String getCarrier(String tel) {
		try{
			//获取返回结果
			String json = httpRequest(tel).toString();
			//拆分xml页面代码
			String[] a = json.split("att");
			String[] c = a[2].split("operators");
			//运营商
			String carrier = c[1].replace(">", "").replace("</", "");
			return carrier;
		}catch(Exception e){
			return "暂无相关运营商信息!";
		}
	}
	
	//得归属地,运营商。如:西双版纳,中国电信
	public static String getResult(String tel) {
		try{
			//获取返回结果
			String json = httpRequest(tel).toString();
			//拆分xml页面代码
			String[] a = json.split("att");
			String[] b = a[1].split(",");
			//归属地
			String city = b[2].replace(">", "").replace("</", "");
			String[] c = a[2].split("operators");
			//运营商
			String carrier = c[1].replace(">", "").replace("</", "");
			String cityAndCarrier = city+","+carrier;
			return cityAndCarrier;
		}catch(Exception e){
			return "暂无相关归属地、运营商信息!";
		}
	}
	
	/**
	* 发起http请求获取返回结果
	* @param tel 待查询手机号
	* @return String 结果字符串
	*/
	public static String httpRequest(String tel) {
		
		//组装查询地址(requestUrl 请求地址)
		String requestUrl = "http://api.k780.com:88/?app=phone.get&phone="+tel+"&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=xml";

		StringBuffer buffer = new StringBuffer();
		try {
			URL url = new URL(requestUrl);
			HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
			httpUrlConn.setDoOutput(false);
			httpUrlConn.setDoInput(true);
			httpUrlConn.setUseCaches(false);
			httpUrlConn.setRequestMethod("GET");
			httpUrlConn.connect();
			//将返回的输入流转换成字符串
			InputStream inputStream = httpUrlConn.getInputStream();
			InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
			
			String str = null;
			while ((str = bufferedReader.readLine()) != null) {
				buffer.append(str);
			}
			bufferedReader.close();
			inputStreamReader.close();
			//释放资源
			inputStream.close();
			inputStream = null;
			httpUrlConn.disconnect();
		}
		catch (Exception e) {
			return "发起http请求后,获取返回结果失败!";
		}
		return buffer.toString();
	}
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Android 中调用第三方 API 接口,可以通过以下步骤实现: 1. 确认需要调用第三方 API 的接口地址、请求方式、请求参数格式等信息。 2. 在 Android 项目中添加网络权限声明,以便访问外部网络资源。可以在 AndroidManifest.xml 文件中添加以下代码: ``` <uses-permission android:name="android.permission.INTERNET" /> ``` 3. 在 Android 项目中创建一个网络请求对象,可以使用 HttpURLConnection 或者 Volley 等类库。 4. 通过网络请求对象设置请求方法、请求头部、请求参数等信息,并发送请求。 下面以 HttpURLConnection 为例,具体实现步骤如下: ```java // 在后台线程中进行网络请求 new Thread(new Runnable() { @Override public void run() { try { // 创建一个 URL 对象,用于指定 API 接口地址 URL url = new URL("https://api.example.com/path/to/api"); // 创建一个 HttpURLConnection 对象,用于发送网络请求 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置请求方法为 GET 或 POST connection.setRequestMethod("GET"); // 设置请求头部信息,例如 API Key、User-Agent 等 connection.setRequestProperty("X-API-Key", "your-api-key"); connection.setRequestProperty("User-Agent", "Android App"); // 设置请求参数,例如 POST 请求需要设置请求体内容 String requestBody = "param1=value1&param2=value2"; OutputStream os = connection.getOutputStream(); os.write(requestBody.getBytes()); os.flush(); os.close(); // 发送网络请求,并获取服务器返回的响应码 int responseCode = connection.getResponseCode(); // 如果请求成功,读取服务器返回的数据 if (responseCode == HttpURLConnection.HTTP_OK) { InputStream is = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); is.close(); // 处理服务器返回的数据,例如使用 JSON 解析库来解析返回的数据 JSONObject jsonObject = new JSONObject(response.toString()); String result = jsonObject.getString("result"); // 对解析后的数据进行逻辑处理,并根据需要进行展示或者保存 } } catch (Exception e) { e.printStackTrace(); } } }).start(); ``` 需要注意的是,在进行网络请求时,需要在 Android 9.0 以上版本中进行一些额外配置,例如需要使用 HTTPS 协议、需要设置网络安全配置等。可以参考 Android 官方文档进行详细了解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值