服务器之家

服务器之家 > 正文

Android编程实现号码归属地查询的方法

时间:2021-04-29 20:30     来源/作者:傅荣康

本文实例讲述了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中提供了电话归属地查询的使用说明

效果图:

Android编程实现号码归属地查询的方法

核心代码:

 

?
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程序设计有所帮助。

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
返回顶部