本文实例讲述了android编程实现号码归属地查询的方法。分享给大家供大家参考,具体如下:
我们通过发送xml访问 webservice就可以实现号码的归属地查询,我们可以使用代理服务器提供的xml的格式进行设置,然后请求提交给服务器,服务器根据请求就会返回给一个xml,xml中就封装了我们想要获取的数据。
发送xml
1.通过url封装路径打开一个httpurlconnection
2.设置请求方式,content-type和content-length
xml文件的content-type为:application/soap+xml; charset=utf-8
3.使用httpurlconnection获取输出流输出数据
webservice
1.webservice是发布在网络上的api,可以通过发送xml调用,webservice返回结果也是xml数据
2.webservice没有语言限制,只要可以发送xml数据和接收xml数据即可
3.http://www.webxml.com.cn/网站上提供了一些webservice服务,我们可以对其进行调用
4.http://webservice.webxml.com.cn/webservices/mobilecodews.asmx?op=getmobilecodeinfo中提供了电话归属地查询的使用说明
效果图:
核心代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
public class xmlservice { public string query(string num) throws exception { inputstream in = this .getclass().getclassloader().getresourceasstream( "query.xml" ); byte [] data = loadutils.load(in); string xml = new string(data); //替换 xml = xml.replace( "#" , num); byte [] senddata = xml.getbytes( "utf-8" ); //发送到代理的地址上 url url = new url( "http://webservice.webxml.com.cn/webservices/mobilecodews.asmx" ); httpurlconnection conn = (httpurlconnection) url.openconnection(); conn.setrequestmethod( "post" ); conn.setrequestproperty( "content-type" , "application/soap+xml; charset=utf-8" ); conn.setrequestproperty( "content-length" , string.valueof(senddata.length)); //将请求的xml发送出去 conn.setdooutput( true ); conn.getoutputstream().write(senddata); //获取从服务器传回来的数据 if (conn.getresponsecode() == 200 ) return parse(conn.getinputstream()); return null ; } //解析流拿到getmobilecodeinforesult中的数据 private string parse(inputstream inputstream) throws exception { xmlpullparser parser = xml.newpullparser(); parser.setinput(inputstream, "utf-8" ); //查找getmobilecodeinforesult标签,获取标签中的数据 for ( int event = parser.geteventtype(); event != xmlpullparser.end_document; event = parser.next()) switch (event) { case xmlpullparser.start_tag: if ( "getmobilecodeinforesult" .equals(parser.getname())) return parser.nexttext(); } return null ; } } |
发送的xml封装了电话号码(query.xml):
1
2
3
4
5
6
7
8
9
|
<?xml version= "1.0" encoding= "utf-8" ?> <soap12:envelope xmlns:xsi= "http://www.w3.org/2001/xmlschema-instance" xmlns:xsd= "http://www.w3.org/2001/xmlschema" xmlns:soap12= "http://www.w3.org/2003/05/soap-envelope" > <soap12:body> <getmobilecodeinfo xmlns= "http://webxml.com.cn/" > <mobilecode>#</mobilecode> <userid></userid> </getmobilecodeinfo> </soap12:body> </soap12:envelope> |
希望本文所述对大家android程序设计有所帮助。