SOAP消息的创建

思考:何为SOAP消息,为什么要创建SOAP消息,以及如何创建SOAP消息?

 

(1)到底什么是SOAP消息,有没有一个示例

WebService是一个应用组件,为其他应用程序提供数据和服务,各种应用程序通过网络协议和一些数据格式来访问WebService。

我们调用WebService,向服务端传过去soap结构体,哪个命名空间、哪个方法、哪些参数,处理之后返回客户端一个soap结构体,为我们调用相应方法返回的结果。

首先,我们先搭建服务端:

IMyService.java(要发布到WebService上的接口)

@WebService
public interface IMyService {
	
	@WebResult(name="addResult")
	public int add(@WebParam(name="a")int a, @WebParam(name="b")int b);
}

MyServiceImpl.java(具体的实现类)

@WebService(endpointInterface="org.soap.service.IMyService")
public class MyServiceImpl implements IMyService {

	@Override
	@WebResult
	public int add(@WebParam(name = "a") int a, @WebParam(name = "b") int b) {
		System.out.println("a+b=" + (a + b));
		return (a + b);
	}
}

MyServer.java(发布成服务)

public class MyServer {

	public static void main(String[] args) {
		
		Endpoint.publish("http://localhost:8989/ms", new MyServiceImpl());
	}
}

这里,我们先在Web Services Explorer中给大家运行一下:

在J2EE视图中,点击,进入WSDL Page,测试运行add()方法,如图

让我们来看看Status中的Source。

SOAP Request Envelope:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://service.soap.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soapenv:Body>
		<q0:add>
			<a>2</a> 
			<b>3</b> 
		</q0:add>
	</soapenv:Body>
</soapenv:Envelope>

SOAP Response Envelope:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
	<S:Body>
		<ns2:addResponse xmlns:ns2="http://service.soap.org/">
			<addResult>5</addResult> 
		</ns2:addResponse>
	</S:Body>
</S:Envelope>

上面的这两段Source即为客户端与服务器之间传递的SOAP消息。

(2)为什么要创建SOAP消息体

我之前的两篇博客,《WebService—快速实现一个基于JAX-WS的WebService项目(一)》和《WebService—快速实现一个基于JAX-WS的WebService项目(二)》,客户端调用服务器的过程中,并没有凸显出SOAP体,而是通过引用源文件,直接调用的方式。

现在,我们采用另一种方式,创建SOAP消息,然后传递SOAP消息,最后处理SOAP消息,完成客户端对服务端的调用。(调用WebService,即向服务端传过去soap结构体,处理之后返回客户端一个soap结构体)

(3)SOAP消息的创建、传递和处理,见下一篇博客。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值