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

 更新时间:2016年01月04日 10:59:34   作者:傅荣康  
这篇文章主要介绍了Android编程实现号码归属地查询的方法,涉及Android xml文件的发送及WebService的操作技巧,需要的朋友可以参考下

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

效果图:

核心代码:

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):

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

相关文章

  • Android性能优化方法

    Android性能优化方法

    这篇文章主要介绍了Android性能优化方法 的相关资料,需要的朋友可以参考下
    2015-12-12
  • Android中双击返回键退出应用实例代码

    Android中双击返回键退出应用实例代码

    本篇文章主要介绍了Android中双击返回键退出应用实例代码,具有一定的参考价值,有兴趣的可以了解一下。
    2017-03-03
  • Android自定义View实现照片裁剪框与照片裁剪功能

    Android自定义View实现照片裁剪框与照片裁剪功能

    这篇文章主要介绍了Android自定义View实现照片裁剪框与照片裁剪功能的相关资料,需要的朋友可以参考下
    2016-07-07
  • Android中Uri和Path之间的转换的示例代码

    Android中Uri和Path之间的转换的示例代码

    本篇文章主要介绍了Android中Uri和Path之间的转换的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 详解Android 7.0 Settings 加载选项

    详解Android 7.0 Settings 加载选项

    本篇文章主要介绍了Android 7.0 Settings 加载选项,Android 7.0 Settings顶部多了一个建议选项,多了个侧边栏,操作更加便捷了,有兴趣的可以了解一下。
    2017-02-02
  • Android实现滑动侧边栏

    Android实现滑动侧边栏

    这篇文章主要为大家详细介绍了Android实现滑动侧边栏效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • kotlin中泛型中in和out的区别解析

    kotlin中泛型中in和out的区别解析

    在Kotlin泛型中,in关键字主要用于定义逆变(Contravariance),它表示一个泛型类型参数可以是指定类型或者它的超类型,这篇文章主要介绍了kotlin中泛型中in和out的区别解析,需要的朋友可以参考下
    2024-12-12
  • Android中ListView用法实例分析

    Android中ListView用法实例分析

    这篇文章主要介绍了Android中ListView用法,结合实例形式分析了ListView的功能,使用技巧与相关注意事项,需要的朋友可以参考下
    2016-02-02
  • Android实现3D云标签效果

    Android实现3D云标签效果

    这篇文章主要为大家详细介绍了Android实现3D云标签效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Android开发中自定义 editText下划线

    Android开发中自定义 editText下划线

    这篇文章主要介绍了Android开发中自定义 editText下划线的相关资料,需要的朋友可以参考下
    2023-03-03

最新评论