public abstract class SOAPMessage extends Object
SOAPMessage
对象由SOAP部分和可选的一个或多个附件部分组成。 SOAPMessage
对象的SOAP部分是一个SOAPPart
对象,其中包含用于消息路由和标识的信息,可以包含应用程序特定的内容。 消息的SOAP部分中的所有数据必须是XML格式。
新的SOAPMessage
对象默认包含以下内容:
SOAPPart
对象 SOAPEnvelope
对象 SOAPBody
对象 SOAPHeader
对象 SOAPMessage.getSOAPPart()
。
所述SOAPEnvelope
对象从检索SOAPPart
对象,并且SOAPEnvelope
对象用于检索SOAPBody
个SOAPHeader
对象。
SOAPPart sp = message.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
SOAPBody sb = se.getBody();
SOAPHeader sh = se.getHeader();
除了强制性的SOAPPart
对象外, SOAPMessage
对象可能包含零个或多个AttachmentPart
对象,每个对象包含应用程序特定的数据。 SOAPMessage
接口提供了创建AttachmentPart
对象以及将其添加到SOAPMessage
对象的方法。 收到一个SOAPMessage
对象的一方可以通过检索各个附件部分来检查其内容。
与SOAP消息的其余部分不同,附件不需要是XML格式,因此可以是从简单文本到图像文件的任何内容。 因此,任何不是XML格式的邮件内容都必须在AttachmentPart
对象中。
MessageFactory
对象可以创建SOAPMessage
对象,该对象具有专门针对SAAJ的特定实现或应用程序的行为。 例如, MessageFactory
对象可能产生符合特定配置文件(如ebXML)的SOAPMessage
对象。 在这种情况下, MessageFactory
对象可能会产生使用ebXML头部SOAPMessage
对象。
为了确保向后的源兼容性,在SAAJ规范版本1.1之后添加到此类的方法都是具体而不是抽象的,它们都具有默认实现。 除非在JavaDocs中为这些方法另有说明,默认实现只需抛出一个UnsupportedOperationException
,并且SAAJ实现代码必须用提供指定行为的方法覆盖它们。 然而,传统的客户端代码没有这种限制,只要没有声明符合规范的某些更新版本,而不是最初编写的。 扩展SOAPMessage类的遗留类可以编译和/或针对后续版本的SAAJ API进行运行,而无需修改。 如果这样的一个类被正确地实现,那么它将继续正确地相对于它被编写的规范版本而正确地运行。
MessageFactory
, AttachmentPart
Modifier and Type | Field and Description |
---|---|
static String |
CHARACTER_SET_ENCODING
指定SOAP消息的字符类型编码。
|
static String |
WRITE_XML_DECLARATION
指定SOAP消息发送时是否包含XML声明。
|
Constructor and Description |
---|
SOAPMessage() |
Modifier and Type | Method and Description |
---|---|
abstract void |
addAttachmentPart(AttachmentPart AttachmentPart)
将给定的
AttachmentPart 对象添加到此
SOAPMessage 对象。
|
abstract int |
countAttachments()
获取此消息中附件数量的计数。
|
abstract AttachmentPart |
createAttachmentPart()
创建一个新的空
AttachmentPart 对象。
|
AttachmentPart |
createAttachmentPart(DataHandler dataHandler)
创建一个
AttachmentPart 对象,并使用给定的
DataHandler 对象进行
DataHandler 。
|
AttachmentPart |
createAttachmentPart(Object content, String contentType)
创建一个
AttachmentPart 对象,并使用指定的内容类型的指定数据填充它。
|
abstract AttachmentPart |
getAttachment(SOAPElement element)
返回与
AttachmentPart 对象,该
SOAPElement 或
null 如果不存在此类附件。
|
abstract Iterator |
getAttachments()
检索所有
AttachmentPart 对象是这部分
SOAPMessage 对象。
|
abstract Iterator |
getAttachments(MimeHeaders headers)
检索具有与指定标题匹配的标题条目的所有
AttachmentPart 对象。
|
abstract String |
getContentDescription()
检索此
SOAPMessage 对象内容的描述。
|
abstract MimeHeaders |
getMimeHeaders()
以传输独立的方式返回此
SOAPMessage 对象的所有传输特定MIME标头。
|
Object |
getProperty(String property)
检索指定属性的值。
|
SOAPBody |
getSOAPBody()
获取此
SOAPMessage 对象中包含的SOAP Body。
|
SOAPHeader |
getSOAPHeader()
获取此
SOAPMessage 对象中包含的SOAP头。
|
abstract SOAPPart |
getSOAPPart()
获取此
SOAPMessage 对象的SOAP部分。
|
abstract void |
removeAllAttachments()
删除所有
AttachmentPart 已经加入到这一对象
SOAPMessage 对象。
|
abstract void |
removeAttachments(MimeHeaders headers)
删除所有具有与指定标题匹配的标题条目的
AttachmentPart 对象。
|
abstract void |
saveChanges()
更新此
SOAPMessage 对象,并对其进行了所有更改。
|
abstract boolean |
saveRequired()
指示这个
SOAPMessage 对象是否需要调用方法
saveChanges 。
|
abstract void |
setContentDescription(String description)
使用给定的说明设置此
SOAPMessage 对象的内容的描述。
|
void |
setProperty(String property, Object value)
将指定的值与指定的属性相关联。
|
abstract void |
writeTo(OutputStream out)
将此
SOAPMessage 对象写入给定的输出流。
|
public static final String CHARACTER_SET_ENCODING
SOAPMessage.setProperty
,
Constant Field Values
public static final String WRITE_XML_DECLARATION
SOAPMessage.setProperty
,
Constant Field Values
public abstract void setContentDescription(String description)
SOAPMessage
对象的内容的描述。
description
-
String
此消息内容的String
getContentDescription()
public abstract String getContentDescription()
SOAPMessage
对象内容的描述。
String
此消息内容的
null
或
null
如果没有设置描述)
setContentDescription(java.lang.String)
public abstract SOAPPart getSOAPPart()
SOAPMessage
对象的SOAP部分。
SOAPMessage
对象包含一个或多个附件,SOAP部分必须是消息中的第一个MIME主体部分。
SOAPPart
对象为此
SOAPMessage
对象
public SOAPBody getSOAPBody() throws SOAPException
SOAPMessage
对象中包含的SOAP Body。
SOAPBody
对象包含的
SOAPMessage
对象
SOAPException
- 如果SOAP主体不存在或无法检索
public SOAPHeader getSOAPHeader() throws SOAPException
SOAPMessage
对象中包含的SOAP头。
SOAPHeader
对象包含此
SOAPMessage
对象
SOAPException
- 如果SOAP头不存在或无法检索
public abstract void removeAllAttachments()
AttachmentPart
已经加入到这一对象SOAPMessage
对象。
此方法不接触SOAP部分。
public abstract int countAttachments()
AttachmentPart
对象的数量是这个
SOAPMessage
对象的一部分
public abstract Iterator getAttachments()
AttachmentPart
对象是这部分
SOAPMessage
对象。
public abstract Iterator getAttachments(MimeHeaders headers)
AttachmentPart
对象。
请注意,返回的附件除了指定的附件之外还可能包含标题。
headers
- 一个
MimeHeaders
要搜索的MIME标题的
MimeHeaders
对象
public abstract void removeAttachments(MimeHeaders headers)
AttachmentPart
对象。
请注意,删除的附件除了指定的附件之外还可能有标题。
headers
- 一个
MimeHeaders
要搜索的MIME标题的
MimeHeaders
对象
public abstract AttachmentPart getAttachment(SOAPElement element) throws SOAPException
AttachmentPart
对象,该对象与由此SOAPElement
或null
如果不存在此类附件。
引用可以通过进行href
属性中所描述SOAP Messages with Attachments经由单个,或Text
含有URI作为WS-I附件描述简介1.0模式类型的元素的子节点ref:swaRef 。
必须支持这两个机制。
通过href
引用支持也意味着这个方法也应该是一个元素,它是一个xop:Include元素( XOP )。
其他参考机制可以由该标准的各个实现来支持。
有关详细信息,请联系您的供应商。
element
- 包含
SOAPElement
附件的引用的SOAPElement
AttachmentPart
或如果没有这样的
AttachmentPart
存在null或在此
SOAPElement
没有
SOAPElement
。
SOAPException
- 如果尝试访问附件时出现错误
public abstract void addAttachmentPart(AttachmentPart AttachmentPart)
AttachmentPart
对象添加到此SOAPMessage
对象。
必须创建一个AttachmentPart
对象,然后才能将其添加到消息中。
AttachmentPart
-一个
AttachmentPart
对象,它是成为本的一部分
SOAPMessage
对象
IllegalArgumentException
public abstract AttachmentPart createAttachmentPart()
AttachmentPart
对象。
请注意,必须使用此新的AttachmentPart
对象作为参数调用方法addAttachmentPart
,以使其成为此SOAPMessage
对象的SOAPMessage
。
AttachmentPart
对象,可以填充并添加到此
SOAPMessage
对象
public AttachmentPart createAttachmentPart(DataHandler dataHandler)
AttachmentPart
对象,并使用给定的
DataHandler
对象进行
DataHandler
。
dataHandler
-在
javax.activation.DataHandler
对象将生成此内容
SOAPMessage
对象
AttachmentPart
对象,其中包含由给定的
DataHandler
对象
DataHandler
数据
IllegalArgumentException
- 如果指定的
DataHandler
对象有问题
DataHandler
, DataContentHandler
public abstract MimeHeaders getMimeHeaders()
SOAPMessage
对象的所有传输特定MIME标头。
MimeHeaders
对象的
MimeHeader
对象
public AttachmentPart createAttachmentPart(Object content, String contentType)
AttachmentPart
对象,并使用指定的内容类型的指定数据AttachmentPart
对象。
的类型的Object
应该对应于用于给定的值Content-Type
。
content
-一个
Object
包含内容为
AttachmentPart
被创建的对象
contentType
- 提供内容类型的String
对象;
示例是“text / xml”,“text / plain”和“image / jpeg”
AttachmentPart
对象
IllegalArgumentException
- 如果contentType与内容对象的类型不匹配,或者如果给定的内容对象没有
DataContentHandler
对象,则可能会抛出
DataHandler
, DataContentHandler
public abstract void saveChanges() throws SOAPException
SOAPMessage
对象,并对其进行了所有更改。
当调用writeTo(OutputStream)
时,会自动调用此方法。
但是,如果对已收到的消息或已发送的消息进行更改,则需要显式调用方法saveChanges
以保存更改。
方法saveChanges
还生成可以回读的任何更改(例如,支持消息标识的配置文件中的MessageId)。
为发送目的创建的消息中的所有MIME标头只有在saveChanges
之后saveChanges
。
此外,该方法标记了将所有AttachmentPart
对象的数据拉入消息的点。
SOAPException
- 如果在保存对此消息的更改时出现问题。
SOAPException
public abstract boolean saveRequired()
SOAPMessage
对象是否需要调用方法
saveChanges
。
true
如果saveChanges
需要调用;
false
否则。
public abstract void writeTo(OutputStream out) throws SOAPException, IOException
SOAPMessage
对象写入给定的输出流。
外部化格式由具有附件规范的SOAP 1.1定义。
如果没有附件,只会写出一个XML流。 对于那些有附件的邮件, writeTo
写入MIME编码的字节流。
请注意,此方法不会写入消息的传输特定MIME标头
out
-在
OutputStream
到该对象
SOAPMessage
对象将被写入
IOException
- 如果发生I / O错误
SOAPException
- 如果在外部化此SOAP消息时出现问题
public void setProperty(String property, Object value) throws SOAPException
有效的产权名称包括WRITE_XML_DECLARATION
和CHARACTER_SET_ENCODING
。 所有这些标准SAAJ属性都以“javax.xml.soap”为前缀。 供应商还可以添加实现特定属性。 这些属性必须以供应商唯一的包名称作为前缀。
将属性WRITE_XML_DECLARATION
设置为"true"
将导致在SOAP消息开始时写出XML声明。 默认值“false”禁止此声明。
属性CHARACTER_SET_ENCODING
默认为值"utf-8"
,这将导致SOAP消息使用UTF-8进行编码。 将CHARACTER_SET_ENCODING
设置为"utf-16"
导致SOAP消息使用UTF-16进行编码。
除了UTF-8和UTF-16之外,一些实现可能允许编码。 有关详细信息,请参阅供应商的文档。
property
- 指定值
property
的属性。
value
- 与指定属性相关联的值
SOAPException
- 如果属性名称无法识别。
public Object getProperty(String property) throws SOAPException
property
- 要检索的属性的名称
null
的值或如果没有此类属性,
null
。
SOAPException
- 如果属性名称不被识别。