java调用webService接口的代码实现
梦想周游世界 人气:0什么是webservice接口
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。
XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。
Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。
WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。
UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。
webservice接口和http接口的区别
http接口走http协议,通过请求路径来区分调用方法,请求报文一般是key-value形式的,返回报文一般是json串,常用的是get和post方法来请求。
webservice接口走的soap协议,通过http传输,请求报文和返回报文都是xml。Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service 完全基于XML(可扩展标记语言)、XSD(XML Schema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
http与soap的区别:
(1) http:标准超文本传输协议;soap:简单对象访问协议。
(2) 都是底层的通信协议,请求包的格式不同,http纯文本格式,soap包是XML格式。
(3) http只能传输纯文本数据, soap可以传递结构化的数据。
(4) soap相对http(post/get)要进行xml解析,速度可能会有所降低。
如何用java代码调用webservice接口
java代码调用webservice接口的方式有很多,我这里介绍使用axis调用webservice接口
// 第一步先导入依赖包 // 创建服务对象 Service service = new Service(); // 生成客户端,实例化调用变量 Call call = (Call) service.createCall(); // 设置超时时间 call.setTimeout(5000); // 设置服务地址,指明远程调用的类, 设置url call.setTargetEndpointAddress(new URL(url)); // 设置远程调用类中的方法,添加调用的函数的命名空间以及函数名称 call.setOperationName(new QName("命名空间","方法名")); // 设置请求参数(根据服务端需要的参数设置例如需要一个参数名为Name的String类型)IN为输入 out 为输出 INOUT为输入输出 // call.addParameter("入参名", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("入参名", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); // 设置返回数据类型(接口出参类型,有时需要写) // call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); // 调用webService获得返回的数据 转入一个Object[]数组,数组的元素就是转入参数的值 outXml = (String) call.invoke(new Object[] {inXml}); // 打印接口返回值 System.out.println(outXml);
接口出参是一个字符串,如何处理出参,获取到想要的数据,可以看下一篇文章:documentHelper解析xml获取想要的数据
加载全部内容