接下来是关于在java中,SOAP的一些相关类和概念。
看之前需要理解SOAP的基本概念。
我们可以想到,在java 程序中发送一个SOAP request,不管是用什么方法,最终发送出去的一定就是一个标准的SOAP request。
只不过java包含一些类,代表了实际的SOAP request中不同部分。以及一些方法,帮助你构造SOAP request中的内容。
首先我们来看看,在java中是如何发送SOAP message的。
第一个类: SOAPConnection
final SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
final SOAPConnection soapConnection = soapConnectionFactory.createConnection();
SOAPMessage reply = soapConnection.call(loginSOAPRequest, new URL("http://172.28.85.6/ASAPService/ASAPService_V1.svc"));
因此发送SOAP request很简单,只需要构造一个SOAPConnection对象,然后运行call方法。
其中,被发送的loginSOAPRequest是之前构造出来的一个SOAPMessage对象,发送的目的URL就是web service的地址。
由代码可见,web services返回的response也是一个SOAPMessage对象。因此我们可以认定:
在java中,发送和接受的对象都是SOAPMessage。
我们可以进一步认定: SOAPMessage这个对象一定包含了SOAP以及http头的信息。只有这样发送出去的才是一个完整有效的SOAP request。
第二个类:SOAPMessage
首先明确一个概念:虽然SOAPMessage这个对象包含了http头的信息。但是java中并没有单独的类对应http头信息。
因为,http header的信息不需要代码自己构造,而是由java自动完成的。也就是说,在上文中看到的必须的http信息 POST, content_type等信息,都是自动填充的。
我们可以修改这些信息,后面将提到,但是不需要自己构造。
SOAPMessage对象包含两个部分:SOAPPart 和 AttachmentPart. 其中SOAPPart 是必须有的部分,AttachmentPart是可选的部分。
SOAPPart 其实就是完整的SOAP request