电话号码归属地查询

                                             简单的电话号码归属地查询器

一、说明:仅供初学者借鉴,希望多多提意见,共同进步。

二、项目结构及界面图展示:

三、布局文件,较简单

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="电话号码归属地查询" />

    <EditText
        android:id="@+id/et_phoneNumber"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="37dp"
        android:ems="11"
        android:hint="请输入电话号码:" >
     
    </EditText>

    <Button
        android:id="@+id/but_search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/et_phoneNumber"
        android:layout_below="@+id/et_phoneNumber"
        android:layout_marginTop="20dp"
        android:onClick="searchPhone"
        android:text="查询归属地" />

    <TextView
        android:id="@+id/tV_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/but_search"
        android:layout_below="@+id/but_search"
        android:layout_marginLeft="24dp"
        android:layout_marginTop="76dp"
      />

</RelativeLayout>

四、代码:

package comcxrh.phonesearch;

import comcxrh.phonesearch.Utils.WebServiceUtils;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.webkit.WebBackForwardList;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

 private EditText et_phoneNumber;
 private TextView tv_info;
 private String phoneNumber;
 private String path;
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  et_phoneNumber=(EditText) findViewById(R.id.et_phoneNumber);
  tv_info=(TextView) findViewById(R.id.tV_info);
 }
/**
 *按钮的监听事件
 * @param v
 */
 public void searchPhone(View v){
  phoneNumber=et_phoneNumber.getText().toString().trim();
  path="http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
  if(phoneNumber!=null && !"".equals(phoneNumber)){
   //查询号码
   getInternetData(); 
  }else{
   Toast.makeText(this, "请输入电话号码", Toast.LENGTH_LONG).show();
  }
   }
 /**
  * 用异步任务的方法,查询号码
  */
 private void getInternetData(){
  new AsyncTask<Void, Void, String>(){

  
  @Override
  protected void onPreExecute() {
   // TODO Auto-generated method stub
   tv_info.setText("正在查询,请稍后......");
   super.onPreExecute();
  }

  protected String doInBackground(Void... arg0) {
     try {
    return WebServiceUtils.queryPhone(path, phoneNumber);
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
   return null;
  }

  @Override
  protected void onPostExecute(String result) {
   // TODO Auto-generated method stub
   tv_info.setText(result);
   super.onPostExecute(result);
  }
  }.execute();
 }

}

另一个工具类:

package comcxrh.phonesearch.Utils;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;


import org.xmlpull.v1.XmlPullParser;


import android.util.Xml;

import comcxrh.phonesearch.MainActivity;
public class WebServiceUtils {
   public static String queryPhone(String path,String phoneNumber) throws Exception{
    String data=readXml().replace("phone", phoneNumber);
    URL url=new URL(path);
  HttpURLConnection conn=(HttpURLConnection) url.openConnection();
  conn.setRequestMethod("POST");
  conn.setConnectTimeout(5000);
  conn.setRequestProperty("Host", "webservice.webxml.com.cn");
  conn.setRequestProperty("Content-Type", "application/soap+xml;charset=utf-8");
  conn.setRequestProperty("Content-Length", data.length()+"");
  conn.setDoOutput(true);
  conn.getOutputStream().write(data.getBytes());
  int code=conn.getResponseCode();
  if(code==200)
  {
   InputStream is=conn.getInputStream();
   return getPhoneNumber(is);
  }
  return null;
   }
   private static String getPhoneNumber(InputStream is) throws Exception {
    XmlPullParser parser=Xml.newPullParser();
  parser.setInput(is, "utf-8");
  for(int event=parser.getEventType();event!=XmlPullParser.END_DOCUMENT;event=parser.next())
  {
   if(event==XmlPullParser.START_TAG && parser.getName().equals("getMobileCodeInfoResult"))
   {
    return parser.nextText();
   }
  }
  return null;
}
public static String readXml() throws IOException{
    ByteArrayOutputStream bao=new ByteArrayOutputStream();
    InputStream is=MainActivity.class.getClassLoader().getResourceAsStream("phonexml.xml");
    byte[] buffer=new byte[1024];
    int len=-1;
    while((len=is.read(buffer))!=-1){
     bao.write(buffer,0,len);
    }
    is.close();
    bao.close();
    return new String(bao.toByteArray());
   }
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1618216.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

实现IP地址归属地显示功能、号码归属地查询

通过IP获取地址的原理 IP地址本身是不具备定位功能的&#xff0c;IP地址只是用来决定一台网络主机在网络里的相对位置&#xff0c;这个位置是相对而言&#xff0c;可以通过IP路由到目的主机&#xff0c;并不会关心目的主机的物理位置在哪里。所以理论上是不可能定位到IP地址的…

MySql015——使用子查询

一、创建customers表 ######################## # Create customers table ######################## use study;CREATE TABLE customers (cust_id int NOT NULL AUTO_INCREMENT,cust_name char(50) NOT NULL ,cust_address char(50) NULL ,cust_city char…

【原创】jmeter并发测试计划

bankQPS 创建线程组 设置并发参数 HTTP请求GET 添加HTTP请求 GET请求 查看结果树 HTTP请求 POST 添加HTTP请求 参数必须设置头信息格式&#xff1a; 添加HTTP头信息 查看结果树 可以选择&#xff0c;仅查看错误日志 汇总报告

rke安装k8s

1、修改集群中各物理机主机名hostname文件 # 查看 cat /etc/hostname # 命令修改 hostnamectl set-hostname k8s-master2、实现主机名与ip地址解析 # 查看cat /etc/hosts # 修改 vi /etc/hosts3、配置ip_forward过滤机制 # 修改 vi /etc/sysctl.conf net.ipv4.ip_forward1…

day 40 | 139. 单词拆分

139. 单词拆分 首先要明确这个是求排列数&#xff0c;所以是先遍历背包&#xff0c;再遍历物品。 func wordBreak(s string, wordDict []string) bool {dp : make([]bool, len(s) 1)dp[0] truefor j : 1; j < len(s); j{for i : 0; i < len(wordDict); i{if j - len…

windows7设置桌面

为什么80%的码农都做不了架构师&#xff1f;>>> win7设置桌面 1&#xff0c;桌面--右键--个性化 2&#xff0c;点击“联机获取更多主题” 或者直接打开微软的网站 https://support.microsoft.com/zh-cn/help/13768 3&#xff0c;下载 4&#xff0c;双击??.themep…

Windows7 3D桌面设置

1.winTab&#xff08;短暂&#xff09; 2.CtrlWinTab(3D桌面锁定) 3.快捷方式的 方法&#xff1a;桌面上新建一个快捷方式&#xff0c;在要求输入项目位置中输入&#xff1a;X:/Windows/system32/rundll32.exe DwmApi #105&#xff08;X为系统盘&#xff09;&#xff0c;下一…

如何识别PCI/PCIE设备需要申请多大的地址空间?

1、PCI/PCIE设备的配置空间 (1)PCI/PCIE设备需要的资源都在配置空间里进行指定&#xff0c;其中需要的地址空间资源在配置空间的基地址寄存器里指定&#xff1b; (2)参考博客&#xff1a;《PCI设备和PCI桥的配置空间(header_type0、header_type1)和配置命令(type0、type1)详解》…

4.21 用了 TCP 协议,数据一定不会丢吗?

目录 数据包的发送流程: 建立连接时丢包 流量控制丢包 网卡丢包 RingBuffer过小导致丢包 网卡性能不足 接收缓冲区丢包 两端之间的网络丢包 ping命令查看丢包&#xff1a; mtr命令&#xff1a; 发生丢包了怎么办 用了TCP协议就一定不会丢包吗​编辑 这类丢包问题怎…

c++中的基本类型

专栏简介&#xff1a;为什么我要重新介绍c的相关知识&#xff0c;在此之前&#xff0c;我对于c的了解也仅仅是在表面。而在后来与c慢慢的接触中&#xff0c;c编程语言越来越让我觉得深奥&#xff0c;所以还是想要重新开创一个专栏来介绍c。对于c的介绍&#xff0c;本专栏会先介…

DTC状态变化例子 4

例子1&#xff1a; 此示例概述了两个操作周期排放相关的 OBD DTC 中 DTC 状态位的操作。该图显示了两个操作周期排放相关的 OBD DTC 的处理。该处理也可应用于非排放相关的 OBD DTC&#xff0c;此处显示仅供一般参考。 0 接收到清除诊断信息 → DTC 状态字节初始化。 1, 2 相关…

CPU深度解析

操作系统课程 计算机组成 ALU:计算单元(运算器)PC:pc寄存器存执行指令Registers:寄存器存数据MMU:控制器程序的构成:指令+数据 总线:一个程序读入内存,全是由0和1构成,从内存读取到cpu计算,需要通过总线。一段01数据段是指令还是数据是通过来源总线区分的。总线分…

c语言练习题34:打印整数二进制的奇数位和偶数位

打印整数二进制的奇数位和偶数位 获取一个整数二进制序列中所有的偶数位和奇数位&#xff0c;分别打印出二进制序列 思路&#xff1a; 1. 提取所有的奇数位&#xff0c;如果该位是1&#xff0c;输出1&#xff0c;是0则输出0 2. 以同样的方式提取偶数位置检测num中某一位是0还…

储能辅助电力系统调峰的容量需求研究(matlab代码)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《储能辅助电力系统调峰的容量需求研究》&#xff0c;是一个很常规很经典的matlab优化代码&#xff0c;主要是对火电、风电和储能等电力设备主体进行优化调度&#xff0c;在调峰能力达不到时采…

特殊要求!2023年初级会计考试报名需要这些材料!

不少小伙伴都在关心 23年初级会计考试什么时候报名 目前&#xff0c;23年初级会计考试报名简章暂未公布 不过每年的报名流程都大同小异 参考22年考试流程&#xff0c; 给大家做了个初级会计考试的整体流程图 2023年初会报考条件 一、基本条件 报名参加会计资格考试的人员…

青岛计算机操作员初级考试时间,青岛市2021年初级会计考试时间安排在这里!...

各位报考2021年初级会计考试的小伙伴们&#xff0c;山东省青岛市2021年初级会计考试时间在这里&#xff01;大家肯定非常关心一件事情&#xff0c;那便是2021年初级会计考试时间&#xff01;小编为大家整理了相关信息&#xff0c;详情如下~ 初级会计考试时间 考试日期为2021年5…

青岛计算机操作员初级考试时间,青岛市2021年初级会计考试时间公布了吗?

山东省青岛市2021年初级会计职称考试时间公布了吗&#xff1f;目前青岛市2021年初级会计考试时间已经公布了哦&#xff0c;定于2021年5月15日举行。详细内容如下&#xff1a; 2021年初级会计考试时间 初级资格考试于2021年5月15日至19日&#xff0c;5月22日至23日&#xff0c;分…

湖北计算机初级考试时间,湖北省2021年初级会计考试时间安排在这里!

各位报考2021年初级会计考试的小伙伴们&#xff0c;湖北省2021年初级会计考试时间在这里&#xff01;大家肯定非常关心一件事情&#xff0c;那便是2021年初级会计考试时间&#xff01;小编为大家整理了相关信息&#xff0c;详情如下~ 初级会计考试时间 考试日期为2021年5月15日…

2023年初级会计考试详细报考流程(图文)

2023年2月7日&#xff0c;会计师考试报名官网“全国会计资格评价网"正式开通考试报名系统。 报名流程 1.登录官网 全国会计资格评价网&#xff08;网址&#xff1a;http://kzp.mof.gov.cn/index.jsp&#xff09; 进入网站后&#xff0c;点击左上角考试报名。 2.进入初级会…

2022年初级会计考试精选复习题及答案

1、某公司签发一张商业汇票&#xff0c;根据《票据法》的规定&#xff0c;该公司的下列签章行为中。正确的是&#xff08;  &#xff09;。 A.公司盖章 B.公司法定代表人李某盖章 C.公司法定代表人李某签名加盖章 D.公司盖章加公司法定代表人李某盖章 2、第15题&#xf…