当前位置: 移动技术网 > IT编程>移动开发>Android > Android使用http请求手机号码归属地查询代码分享

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

爱丝曼传奇下载,素颜格格大明英烈传,3234

归属地数据源


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) 免费用户为空字符串;返回数据:字符串(手机号码:省份 城市 手机卡类型)。

测试结果:如下

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网