SOAP的全拼(Simple Object Access Protocol )
soap协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:
1.SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;
2.SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例;
3. SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;
4.SOAP绑定(binding),使用底层协议交换信息
SOAP 指简易对象访问协议
SOAP 是一种通信协议
SOAP 用于应用程序之间的通信
SOAP 是一种用于发送消息的格式
SOAP 被设计用来通过因特网进行通信
SOAP 独立于平台
SOAP 独立于语言
SOAP 基于 XML
SOAP 很简单并可扩展
SOAP 运许您绕过防火墙
SOAP 将被作为 W3C 标准来发展
1.打开MyEclipse或Eclipse
2.新建一个Web Service Project 我们命名为
KsoapServiceTest
3.建一个包为
com.zhanghao.service
java2wsdl.bat文件介绍
java -cp .;../lib/axis.jar;../lib/commons-logging.jar;../lib/commons-discovery.jar;../lib/wsdl4j.jar;../lib/jaxrpc.jar;../lib/saaj.jar;../lib/mail.jar;../lib/activation.jar org.apache.axis.wsdl.Java2WSDL -o KsoapService.wsdl -l"http://localhost:8080/services/KsoapserviceTest“ com.zhanghao.service.IKsoapService
Pause
其中红色地方要注意: KsoapService.wsdl KsoapService为要输出wsdl 文件的文件名
“http://localhost:8080/services/KsoapserviceTest
这里一般为项目名
com.zhanghao.service.IKsoapService
这里为包名+接口名
详细命令介绍见:Java2WSDL命令参考.doc
wsdl2java.bat文件介绍
java -cp .;../lib/axis.jar;../lib/commons-logging.jar;../lib/commons-discovery.jar;../lib/wsdl4j.jar;../lib/jaxrpc.jar;../lib/saaj.jar;../lib/mail.jar;../lib/activation.jar org.apache.axis.wsdl.WSDL2Java KsoapService.wsdl --NStoPkg http://localhost:8080/KsoapserviceTest/services -S true
pause
其中红色地方要注意: KsoapService.wsdl 为刚才输出wsdl文件的文件名
http://localhost:8080/KsoapserviceTest/services
这里一般为项目名 注意跟java2wsdl.bat文件中的url区别
详细命令解释见文档:WSDL2Java命令参考A.doc WSDL2Java命令参考B.doc
编辑web.xml文件:
<servlet>
<servlet-name>AxisServlet </servlet-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet </servlet-name>
<url-pattern>/services/* </url-pattern>
</servlet-mapping>
package com.zhanghao.client;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import com.zhanghao.service.IKsoapService;
import com.zhanghao.service.IKsoapServiceServiceLocator;
public class Client {
public static void main(String[] args) {
//第一步:创建IKsoapServiceServiceLocator的一个对象
IKsoapServiceServiceLocator locator = new IKsoapServiceServiceLocator();
//第二步:定义一个IKsoapService接口的变量
IKsoapService server = null;
//第三步:调用setKsoapserviceTestEndpointAddress方法,注意这个方法名的特点set+KsoapserviceTest(项目名)+EndpointAddress
//url的格式:http://127.0.0.1:8080/项目名/services/接口类名去掉首字母I
locator.setKsoapserviceTestEndpointAddress("http://127.0.0.1:8080/KsoapserviceTest/services/KsoapService");
//定义一个变量接收返回信息
String response = null;
try {
//得到服务
server = locator.getKsoapserviceTest();
} catch (ServiceException e) {
e.printStackTrace();
}
try {
//调用要使用的方法
response = server.test("abcd");
} catch (RemoteException e) {
e.printStackTrace();
}
//打印响应
System.out.println("*************************************");
System.out.println("响应内容为:-->>"+response);
System.out.println("*************************************");
}
}