Android使用http请求手机号码归属地查询代码分享

归属地数据源

http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx

webxml网站还支持其他请求方式 如SOAP等等

界面比较简单

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="5dip" android:paddingLeft="5dip" android:paddingRight="5dip" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="手机号码:" /> <EditText android:id="@+id/phone_sec" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textPhonetic" android:singleLine="true" android:hint="至少输入前七位" /> <Button android:id="@+id/query_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="查询" /> <TextView android:id="@+id/result_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|center_vertical" /> </LinearLayout>

下面是MainActivity.java

package com.sphere.guishudi; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /** * 手机号码归属地查询 */ public class MainActivity extends Activity { private EditText phoneSecEditText; private TextView resultView; private Button queryButton; private ProgressDialog proDialog; private Thread thread; //定义消息 private static final int NUMBER_FORMAT_ERROR = 0; private static final int QUERY_SUCCESS_MSG = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); phoneSecEditText = (EditText) findViewById(R.id.phone_sec); resultView = (TextView) findViewById(R.id.result_text); queryButton = (Button) findViewById(R.id.query_btn); proDialog = new ProgressDialog(MainActivity.this); //proDialog.setTitle("查询归属地"); proDialog.setMessage("正在查询,请您耐心等待..."); queryButton.setOnClickListener(new QueryOnClickListener()); } Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case NUMBER_FORMAT_ERROR: phoneSecEditText.setText(""); resultView.setText("您输入的号码格式有误"); break; case QUERY_SUCCESS_MSG: resultView.setText(msg.obj.toString()); proDialog.dismiss(); break; default: break; } } }; String phoneSec; class QueryOnClickListener implements OnClickListener{ @Override public void onClick(View arg0) { //得到手机号 phoneSec = phoneSecEditText.getText().toString().trim(); if("".equals(phoneSec)||phoneSec.length()<7){ //发送消息 显示查询结果的TextView清空 handler.sendEmptyMessage(NUMBER_FORMAT_ERROR); //锁定焦点 phoneSecEditText.requestFocus(); return; } // 查询手机号码(段)信息 //getRemoteInfo(phoneSec); thread = new Thread(new QueryThread()); thread.start(); proDialog.onStart(); proDialog.show(); } } class QueryThread implements Runnable{ @Override public void run() { getRemoteInfo(phoneSec); } } /** * 手机号段归属地查询 * @param phoneSec 手机号段 */ private void getRemoteInfo(String phoneSec) { // TODO Auto-generated method stub // 定义待请求的URL String requestUrl = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo"; // 创建HttpClient实例 HttpClient client = new DefaultHttpClient(); // 根据URL创建HttpPost实例 HttpPost post = new HttpPost(requestUrl); List<NameValuePair> params = new ArrayList<NameValuePair>(); // 设置需要传递的参数 params.add(new BasicNameValuePair("mobileCode", phoneSec)); params.add(new BasicNameValuePair("userId", "")); try { // 设置URL编码 post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); // 发送请求并获取反馈 HttpResponse response = client.execute(post); // 判断请求是否成功处理 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // 解析返回的内容 String result = EntityUtils.toString(response.getEntity()); // 将查询结果经过解析后显示在TextView中 //resultView.setText(filterHtml(result)); Message msg = new Message(); msg.what = QUERY_SUCCESS_MSG; msg.obj = filterHtml(result); handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); } } /** * 使用正则表达式过滤HTML标记 * * @param source 待过滤内容 * @return */ private String filterHtml(String source) { if(null == source){ return ""; } return source.replaceAll("</?[^>]+>","").trim(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }

记得在AndroidManifest.xml中配置<uses-permission android:name="android.permission.INTERNET" />

给予程序访问网络的权限。

使用子线程访问网络查询数据,handler做消息处理。

上面所讲解的只是HttpClient最基本的功能(发起POST请求);我们在浏览器客户端所执行的大多数操作HttpClient都能够模拟,例如:提交表单、查询数据、上传下载文档、页面跳转、Session存储等。

getMobileCodeInfo

获得国内手机号码归属地省份、地区和手机卡类型信息

输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID) 免费用户为空字符串;返回数据:字符串(手机号码:省份 城市 手机卡类型)。

测试结果:如下

时间: 2024-08-02 03:12:48

Android使用http请求手机号码归属地查询代码分享的相关文章

Android使用http请求手机号码归属地查询代码分享_Android

归属地数据源 http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx webxml网站还支持其他请求方式 如SOAP等等 界面比较简单 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" an

PHP手机号码归属地查询代码(API接口/mysql)

  首先我们介绍使用自己的数据库查询多个手机号码,那还是建议你拥有一个自己的的手机号码数据库.正常情况下,只是满足一般查询的话,你不需要去购买专业版的手机号码数据库,增加无谓成本.我免费为你提供一个ACCESS数据库,包含17万多条数据,常用的130-139.150-159以及180-189开头手机号码段都在其中,你可以借助数据库工具轻松地将它转换成MYSQL或其它版本数据库 最新手机号码数据库下载地址:http://www.111cn.net/down/phone-number-databas

asp.net手机号码归属地查询代码(1/2)

create table t_phone ( id int identity(1,1) not null primary key, startno varchar(11) not null, endno varchar(11) not null, cityname nvarchar(50) not null ) 用户查询 sqlconnection con = new sqlconnection(system.configuration.configurationmanager.connecti

我的Android进阶之旅------&amp;gt;Android通过调用Webservice实现手机号码归属地查询

此app的实现功能如图所示:   注:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx是本文webservice的提供商 具体的用法见:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo   以下是 SOAP 1.2 请求和响应示例.所显示的占位符需替换为实际值.   POST /WebServices/Mob

使用C#开发基于Winform的手机号码归属地查询工具

一.需求描述 输入正确的手机号码,查询该号码的归属地和其他相关信息. 二.需求分析 1.实现手机号码归属地查询的方法 01.本地数据库存储信息,查询本地库 02.调用WebService查询 03.通过Http请求Get方式从服务器上获取数据 2.方式分析: 01.采用本地数据库存储,可以断网查询,无需付费,但信息量较大占用本地资源 02.调用WebService必须连接网络,不占用本地资源,但公开的WebService大多数需要付费. 03.通过Http请求Get方式从服务器上获取数据的方式必

浅析Android手机卫士之号码归属地查询_Android

使用小米号码归属地数据库,有两张表data1和data2 先查询data1表,把手机号码截取前7位 select outkey from data1 where id="前七位手机号" 再查询data2表, select location from data2 where id="上面查出的outkey" 可以使用子查询 select location from data2 where id=(select outkey from data1 where id=&q

浅析Android手机卫士之号码归属地查询

使用小米号码归属地数据库,有两张表data1和data2 先查询data1表,把手机号码截取前7位 select outkey from data1 where id="前七位手机号" 再查询data2表, select location from data2 where id="上面查出的outkey" 可以使用子查询 select location from data2 where id=(select outkey from data1 where id=&q

手机号码归属地查询

<!-- 这是一款免费的手机号码归属地查询程序是php教程写的,包括查询实例与实例代码--> <html> <head> <title>手机号码归属地查询</title> </head> <body> <form action="index.php?action=search" method="POST"> <p>请输入你要查询的手机号码:<input

Android中手机号码归属地查询实现

 这部分是昨天学习的,但是因为眼睛超负荷所以拖到现在,以后要合理规划时间. 目前手机里面的号码归属地查询主要是通过两种方式:1.联网查询,2.匹配本机归属地数据库. 我认为两种结合方式最好,在本地数据库中匹配不到的在进行联网查询,能大大增加匹配效果,并且不用过于增加本地数据库容量而增大安装包大小. 步骤:1.开启软件的时候把数据库从assets目录拷贝到files目录下,如果已存在,则不用重新拷贝. 2.实现界面. 3.实现工具类PhoneAddressUtils的getPhoneAddress