展会信息港展会大全

调用webservice查询手机号码归属地信息
来源:互联网   发布日期:2015-09-28 15:43:45   浏览:2552次  

导读:Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。在这里我们使用soap协议往webservice发送信息,然后得到webservice服务器返回过来......

Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。在这里我们使用soap协议往webservice发送信息,然后得到webservice服务器返回过来的信息,以此来查询手机号码的归属地信息。

Web Services有很多服务提供商,在这里我们使用www.webxml.com.cn的,如图:

点击进去,我们可以看到soap协议定义的内容。

接下来就是编写代码了。

package cn.mzba.service;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;

public class MobileService {

public static String findAddress(String mobile) throws Exception {

InputStream is = MobileService.class.getClassLoader()

.getResourceAsStream("mobilesoap.xml");

byte[] data = StreamTool.readStream(is);

String xml = new String(data, "UTF-8");

String soap = xml.replaceAll("\\$mobile", mobile);

byte[] result = soap.getBytes("UTF-8");

String path = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("POST");

conn.setDoOutput(true);

conn.setConnectTimeout(5 * 1000);

conn.setRequestProperty("Content-Type",

"application/soap+xml; charset=utf-8");

conn.setRequestProperty("Content-Length", String.valueOf(result.length));

OutputStream os = conn.getOutputStream();

os.write(result);

os.flush();

os.close();

InputStream isSocp = conn.getInputStream();

return parse(isSocp);

}

public static String parse(InputStream is) throws Exception {

XmlPullParser parser = Xml.newPullParser();

parser.setInput(is, "UTF-8");

int event = parser.getEventType();

while (event != XmlPullParser.END_DOCUMENT) {

switch (event) {

case XmlPullParser.START_TAG:

if ("getMobileCodeInfoResult".equals(parser.getName())) {

return parser.nextText();

}

break;

}

event = parser.next();

}

return null;

}

}

package cn.mzba.service;

import java.io.ByteArrayOutputStream;

import java.io.InputStream;

public class StreamTool {

/**

* 读取输入流数据

*

* @param is

* @return

* @throws Exception

*/

public static byte[] readStream(InputStream is) throws Exception {

ByteArrayOutputStream os = new ByteArrayOutputStream();

byte[] buffer = new byte[2048];

int len = 0;

while ((len = is.read(buffer)) != -1) {

os.write(buffer, 0, len);

}

is.close();

return os.toByteArray();

}

}

赞助本站

人工智能实验室

相关热词: webservice 号码 归属地

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港