1,WebService是基于SOAP协议的,
SOAP:Simple Object Access Protocal简单对象访问协议。
SOAP是通过HTTP的POST方式发送XML格式文档的协议。
2,WebService其实就是一个程序,它可以实现本地的程序访问远程主机服务器上的一个方法,可以实现远程方法调用。而且可以实现跨平台,跨语言。比如,在北京的一个程序要调用上海服务器上的一个程序的方法,而且不管这个远程方法是用什么语言写的,只要远程服务器提供WebService服务,就可以实现调用。
3,演示:
(1)手机归属地查询:
提供手机归属地查询的公司一般是移动或电信公司。提供的这些服务是免费的。我们可以在我们的应用程序中调用这些服务,我们只需要在我们的程序中调用运营商提供的方法即可。
在微软的网站上提供了这样的服务接口。
在右面有最新webservice,这里面就是提供的免费的服务端口:
打开more,在里面点击国内手机号码归属地查询web服务:
这里有Endpoint和WSDL等,
Endpoint是给用户使用的,在里面提供了查询手机信息的接口。
WSDL是给程序员看的,里面是XML文档,使用这个页面的URL就可以生成我们程序所需要的java类文件。
打开Endpoint,可以使用查询功能:
我们选择getMobileCodeInfo查询详细信息:
在mobileCode中输入手机号,userID是收费使用的,我们不用填(如果在程序中,调用这个方法,userID要传””而不是null)。
点击调用可以看到如下信息:
打开WSDL,可以看到XML文档:
使用这个XML文档生成Java代码,应用在我们的程序中:
需要使用JDK提供的命令:wsimport,在命令行直接输入wsimport,可以获得帮助信息。
在本地硬盘中新建一个文件夹,比如在e盘新建wstest文件夹:
在命令行进入这个目录:
根据URL网址输入命令:
wsimport –s . http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
-s是生成java源文件和class字节码,后面的点是在当前目录下生成,后面再将提供XML文档的URL地址粘贴进去。回车,解析生成文件。
默认根据网站url生成路径文件夹。Cn.com.webxml
将里面的.class文件全部删除,将java文件复制到项目中。
建立测试文件WsDemo.java。
public class WsDemo {
public static void main(String[] args) {
MobileCodeWSSoap m =
new MobileCodeWS().getMobileCodeWSSoap();
String ss = m.getMobileCodeInfo("18702238091","");
m.getDatabaseInfo();
System.err.println("sfasfdadfa");
System.err.println("手机号是:"+ss);
}
}
编码问题:
默认情况下,提示中是没有中文解释的:
这里应该使用GBK编码。将这个工程设置成GBK编码:
工程右键àpropertiesàResource,将text file encoding的other中设置为GBK。然后可以看到:
运行这个main,就可以在控制台看到对应的信息(需要连网)。
(2)QQ号是否在线与这个过程类似。
在使用wsimport命令时,指定建立的目录结构(包路径):通过-p参数指定。