java中调用一个webService的接口,详细步骤

一、WebService介绍
1、WebService定义
顾名思义就是基于Web的服务。
它使用Web(HTTP)方式,接收和响应外部系统的某种请求,从而实现远程调用。
web service能解决:
    * 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据)
    * 一个跨语言、跨平台的规范(抽象)
    * 多个跨平台、跨语言的应用间通信整合的方案(实际)


2、webservice理解
我们可以调用互联网上查询天气信息Web服务,然后将它嵌入到我们的程序(C/S或B/S程序)当中来,
当用户从我们的网点看到天气信息时,他会认为我们为他提供了很多的信息服务,
但其实我们什么也没有做,只是简单了调用了一下服务器上的一段代码而已。
WebSerice可以将你的服务(一段代码)发布到互联网上让别人去调用,
也可以调用别人机器上发布的WebService,就像使用自己的代码一样。
* 什么时候使用web Service:
1. 同一家公司的新旧应用之间
2. 不同公司的应用之间
    如天猫网与中通物流系统交互
3. 一些提供数据的内容聚合应用:天气预报、股票行情


3、webservice调用的预备知识
(1)XML—Extensible Markup Language 扩展性标记语言 
    XML,用于传输格式化的数据,是Web服务的基础。
    namespace-命名空间。
    xmlns=“http://www.xr.com” 使用默认命名空间。
    xmlns:xr=“http://www.xr.com”使用指定名称的命名空间。

(2)WSDL—WebService Description Language Web服务描述语言。
    通过XML形式说明服务在什么地方-地址。
    通过XML形式说明服务提供什么样的方法 – 如何调用。

(3)SOAP—Simple Object Access Protocol(简单对象访问协议)
    SOAP作为一个基于XML语言的协议用于有网上传输数据。
    SOAP = 在HTTP的基础上+XML数据。
    SOAP是基于HTTP的。
    SOAP的组成如下:
        Envelope – 必须的部分。以XML的根元素出现。
        Headers – 可选的。
        Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。

4、webservice服务网址
Webservice服务网站:http://www.webxml.com.cn

5、WSDL解析
点开webservice网站上的手机归属地查询里的
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
查看wsdl对服务器的描述
Wsdl文档从下往上读
wsdl:service—所有请求服务的站点集合
wsdl:port—定义为webservice单个服务访问点
binding—特定服务访问点与具体服务类的绑定
PortType—对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持(服务类)
Operation—对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对(方法)
Types-数据类型定义的容器,它使用某种类型系统需要的输入参数和输出参数的数据类型
Message—通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构(输入参和输出参)

 可以在java项目和spring项目中调用,方法是一样的

第一步:进入到web服务的官网中,选择你要调用的web服务(我选择的是电话号码归属地的,其他的是一样的,自己发布的webservice也是一样的)。然后进入到后缀名是?wsdl的路径中,可以看一下。

http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx .asmx结尾的路径中,有该服务可以调用的方法,以及方法中的参数。

第二步,复制路径到命令窗体中,先进入到要解析到的文件夹路径中,然后输入

 

wsimport -s . -p com.xx.mobile wsdl的路径    这是获取到java文件和class文件,-p后面 是自己取的包名

wsimport -d .  wsdl的路径    这是获取到class文件

 

生成的java文件:

第三步:因为项目中只能是java文件,所以把java文件复制到项目中相应的位置,然后调用方法,调用方法一定要联网!
记得不要导错包,你生成的java文件复制在哪个包,就导入哪个包下的。这个可以在main方法中用,有可以在spring对应的方法中调用,方法是一样的。不知道有哪些方法可以调用,可以到asxm结尾的路径中看详细的方法。

public class TestModel {
    public static void main(String[] args) {
        //声明访问点的对象
        MobileCodeWS ws=new MobileCodeWS();
        //获取具体的站点绑定的类对象
        MobileCodeWSSoap wsSoap=ws.getMobileCodeWSSoap();
        //调用绑定类的具体方法
        String info = wsSoap.getMobileCodeInfo("15666666666", "");
        System.out.println(info);
    }
}

 调用结果:

 

为什么是MobileCodeWS?

答:翻到wsdl路径中的最后面,后面有一个service name的标签,里面就是访问点的对象名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章