java.lang.Object javax.xml.soap.AttachmentPart
public abstract class AttachmentPart
SOAPMessage
对象的一个附件。SOAPMessage
对象可以包含 0 个、1 个或多个 AttachmentPart
对象。每个 AttachmentPart
对象由两部分组成:特定于应用程序的内容和关联的 MIME 头。MIME 头由可用于标识和描述内容的名称/值对组成。
AttachmentPart
对象必须符合某些标准。
Content-Type
AttachmentPart
对象内容中的数据类型,必须符合 [RFC2045]。以下是一个 Content-Type 头的示例: Content-Type:application/xml以下代码行(其中
ap
是一个 AttachmentPart
对象)设置前一示例中显示的头。 ap.setMimeHeader("Content-Type", "application/xml");
AttachmentPart
对象的内容部分没有任何限制。内容可以是简单的纯文本对象、复杂的 XML 文档或图像文件。
AttachmentPart
对象是使用方法 SOAPMessage.createAttachmentPart
创建的。设置 MIME 头之后,使用方法 SOAPMessage.addAttachmentPart
将 AttachmentPart
对象添加到创建它的消息中。
以下代码片段(其中 m
是一个 SOAPMessage
对象,contentStringl
是一个 String
)创建 AttachmentPart
的实例,使用一些内容和头信息设置 AttachmentPart
对象,并将 AttachmentPart
对象添加到 SOAPMessage
对象。
AttachmentPart ap1 = m.createAttachmentPart(); ap1.setContent(contentString1, "text/plain"); m.addAttachmentPart(ap1);
以下代码片段创建第二个 AttachmentPart
实例并将其添加到同一消息中。jpegData
是表示 jpeg 文件的一个二进制字节缓冲区。
AttachmentPart ap2 = m.createAttachmentPart(); byte[] jpegData = ...; ap2.setContent(new ByteArrayInputStream(jpegData), "image/jpeg"); m.addAttachmentPart(ap2);
getContent
方法检索 AttachmentPart
对象的内容和头。根据存在 DataContentHandler
对象的不同,返回的 Object
可能是与 MIME 类型相对应的类型化的 Java 对象,也可能是以字节形式包含内容的 InputStream
对象。
String content1 = ap1.getContent(); java.io.InputStream content2 = ap2.getContent();方法
clearContent
从
AttachmentPart
对象中移除所有内容,但不影响其头信息。
ap1.clearContent();
构造方法摘要 | |
---|---|
AttachmentPart() |
方法摘要 | |
---|---|
abstract void |
addMimeHeader(String name, String value) 将带有指定名称和值的 MIME 头添加到此 AttachmentPart 对象。 |
abstract void |
clearContent() 清除此 AttachmentPart 对象的内容。 |
abstract Iterator |
getAllMimeHeaders() 以 MimeHeader 对象上的迭代器形式,检索此 AttachmentPart 对象的所有头。 |
abstract InputStream |
getBase64Content() 以 Base64 编码字符数据的形式返回可用于获取 AttachmentPart 内容的 InputStream ,此方法将对附件的原始字节进行 Base64 编码,然后返回该内容。 |
abstract Object |
getContent() 以 Java 对象的形式获取此 AttachmentPart 对象的内容。 |
String |
getContentId() 获取名为 "Content-ID" 的 MIME 头的值。 |
String |
getContentLocation() 获取名为 "Content-Location" 的 MIME 头的值。 |
String |
getContentType() 获取名为 "Content-Type" 的 MIME 头的值。 |
abstract DataHandler |
getDataHandler() 获取针对此 AttachmentPart 对象的 DataHandler 对象。 |
abstract Iterator |
getMatchingMimeHeaders(String[] names) 检索匹配给定数组中名称的所有 MimeHeader 对象。 |
abstract String[] |
getMimeHeader(String name) 获取给定 String 所标识的头的所有值。 |
abstract Iterator |
getNonMatchingMimeHeaders(String[] names) 检索所有名称不匹配给定数组中任一名称的 MimeHeader 对象。 |
abstract InputStream |
getRawContent() 以 InputStream 的形式获取此 AttachmentPart 对象的内容,等效于调用了 getContent 但没有为此 AttachmentPart 的 content-type 注册 DataContentHandler 。 |
abstract byte[] |
getRawContentBytes() 以 byte[] 数组形式获取此 AttachmentPart 对象的内容,等效于调用了 getContent 但没有为此 AttachmentPart 的 content-type 注册 DataContentHandler 。 |
abstract int |
getSize() 返回此 AttachmentPart 对象中的字节数。 |
abstract void |
removeAllMimeHeaders() 移除所有 MIME 头条目。 |
abstract void |
removeMimeHeader(String header) 移除匹配给定名称的所有 MIME 头。 |
abstract void |
setBase64Content(InputStream content, String contentType) 根据 Base64 源 InputStream 设置此附件部分的内容,并将 Content-Type 头的值设置为 contentType 中包含的值,此方法将首先对 base64 输入流进行解码,然后将得到的原始字节写入附件。 |
abstract void |
setContent(Object object, String contentType) 将此附件部分的内容设置为给定 Object 的内容,并将 Content-Type 头的值设置为给定类型。 |
void |
setContentId(String contentId) 使用给定值设置名为 "Content-ID" 的 MIME 头。 |
void |
setContentLocation(String contentLocation) 使用给定值设置名为 "Content-Location" 的 MIME 头。 |
void |
setContentType(String contentType) 使用给定值设置名为 "Content-Type" 的 MIME 头。 |
abstract void |
setDataHandler(DataHandler dataHandler) 将给定的 DataHandler 对象设置为此 AttachmentPart 对象的数据处理程序。 |
abstract void |
setMimeHeader(String name, String value) 将匹配给定名称的第一个头条目的值更改为给定值,如果现有的头都不匹配,则添加一个新的头。 |
abstract void |
setRawContent(InputStream content, String contentType) 将此附件部分的内容设置为 InputStream content 所包含的内容,并将 Content-Type 头的值设置为 contentType 中包含的值。 |
abstract void |
setRawContentBytes(byte[] content, int offset, int len, String contentType) 将此附件部分的内容设置为 byte[] 数组 content 所包含的内容,并将 Content-Type 头的值设置为 contentType 中包含的值。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public AttachmentPart()
方法详细信息 |
---|
public abstract int getSize() throws SOAPException
AttachmentPart
对象中的字节数。
AttachmentPart
对象的大小,以字节为单位;如果无法确定其大小,则返回 -1
SOAPException
- 如果此附件的内容已损坏,或者尝试确定其大小时引发异常。
public abstract void clearContent()
AttachmentPart
对象的内容。MIME 头部分保持不变。
public abstract Object getContent() throws SOAPException
AttachmentPart
对象的内容。返回的 Java 对象的类型取决于:(1) 用来解释字节的
DataContentHandler
对象;(2) 头中给定的
Content-Type
。
对于 MIME 内容类型 "text/plain"、"text/html" 和 "text/xml",DataContentHandler
对象执行与对应于 MIME 类型的 Java 类型之间的转换。对于其他 MIME 类型,DataContentHandler
对象可以返回以原始字节形式包含内容的 InputStream
对象。
符合 SAAJ 的实现至少必须返回一个 java.lang.String
对象(与 Content-Type
值为 text/plain
的任何内容流相对应)、一个 javax.xml.transform.stream.StreamSource
对象(与 Content-Type
值为 text/xml
的内容流相对应)、以及一个 java.awt.Image
对象(与 Content-Type
值为 image/gif
或 image/jpeg
的内容流相对应)。对于已安装的 DataContentHandler
对象不理解的内容类型,DataContentHandler
对象要返回带有原始字节的 java.io.InputStream
对象。
AttachmentPart
对象内容的 Java 对象
SOAPException
- 如果此
AttachmentPart
对象中没有设置任何内容,或者出现数据转换错误
public abstract InputStream getRawContent() throws SOAPException
AttachmentPart
对象的内容,等效于调用了
getContent
但没有为此
AttachmentPart
的
content-type
注册
DataContentHandler
。
注意,读取返回的 InputStream 可能导致消耗流中的数据。调用者负责在调用 Subsequent API 之前适当地重置 InputStream。如果需要附件原始内容的一个副本,则应改用 getRawContentBytes()
API。
InputStream
对象,从中可以访问
AttachmentPart
包含的原始数据。
SOAPException
- 如果此
AttachmentPart
对象中没有设置任何内容,或者出现数据转换错误。
getRawContentBytes()
public abstract byte[] getRawContentBytes() throws SOAPException
AttachmentPart
对象的内容,等效于调用了
getContent
但没有为此
AttachmentPart
的
content-type
注册
DataContentHandler
。
AttachmentPart
原始数据的
byte[]
数组。
SOAPException
- 如果此
AttachmentPart
对象中没有设置任何内容,或者出现数据转换错误。
public abstract InputStream getBase64Content() throws SOAPException
AttachmentPart
内容的
InputStream
,此方法将对附件的原始字节进行 Base64 编码,然后返回该内容。
InputStream
对象,从中可以读取 Base64 编码的
AttachmentPart
。
SOAPException
- 如果此
AttachmentPart
对象中没有设置任何内容,或者出现数据转换错误。
public abstract void setContent(Object object, String contentType)
Object
的内容,并将
Content-Type
头的值设置为给定类型。
Object
的类型应该对应于指定给
Content-Type
的值。这取决于所使用的特定
DataContentHandler
对象集合。
object
- 组成此附件部分内容的 Java 对象
contentType
- 指定内容类型的 MIME 字符串
IllegalArgumentException
- 如果 contentType 不匹配内容对象的类型,或者没有针对此内容对象的
DataContentHandler
对象
getContent()
public abstract void setRawContent(InputStream content, String contentType) throws SOAPException
InputStream
content
所包含的内容,并将
Content-Type
头的值设置为
contentType
中包含的值。
后续调用 getSize() 可能无法准确度量内容的大小。
content
- 要添加到附件部分的原始数据
contentType
- 将在
Content-Type
头中设置的值
SOAPException
- 如果设置内容时发生错误
NullPointerException
- 如果
content
为 null
public abstract void setRawContentBytes(byte[] content, int offset, int len, String contentType) throws SOAPException
byte[]
数组
content
所包含的内容,并将
Content-Type
头的值设置为
contentType
中包含的值。
content
- 要添加到附件部分的原始数据
contentType
- 要在
Content-Type
头中设置的值
offset
- 内容字节数组中的偏移量
len
- 组成内容的字节数
SOAPException
- 如果设置内容时发生错误,或者内容为 null
public abstract void setBase64Content(InputStream content, String contentType) throws SOAPException
InputStream
设置此附件部分的内容,并将
Content-Type
头的值设置为
contentType
中包含的值,此方法将首先对 base64 输入流进行解码,然后将得到的原始字节写入附件。
后续调用 getSize() 可能无法准确度量内容的大小。
content
- 要添加到附件部分的 Base64 解码数据
contentType
- 要在
Content-Type
头中设置的值
SOAPException
- 如果设置内容时发生错误
NullPointerException
- 如果
content
为 null
public abstract DataHandler getDataHandler() throws SOAPException
AttachmentPart
对象的
DataHandler
对象。
AttachmentPart
对象关联的
DataHandler
对象
SOAPException
- 如果此
AttachmentPart
对象中没有数据
public abstract void setDataHandler(DataHandler dataHandler)
DataHandler
对象设置为此
AttachmentPart
对象的数据处理程序。通常,对于传入的消息,数据处理程序是自动设置的。创建消息并填充内容之后,可以使用
setDataHandler
方法从各种数据源获取数据并转入该消息中。
dataHandler
- 要设置的
DataHandler
对象
IllegalArgumentException
- 如果指定的
DataHandler
对象存在问题
public String getContentId()
String
;如果不存在此类字符串,则返回
null
setContentId(java.lang.String)
public String getContentLocation()
String
;如果不存在此类字符串,则返回
null
public String getContentType()
String
;如果不存在此类字符串,则返回
null
public void setContentId(String contentId)
contentId
- 给出 "Content-ID" 头值的
String
IllegalArgumentException
- 如果指定的
contentId
值存在问题
getContentId()
public void setContentLocation(String contentLocation)
contentLocation
- 给出 "Content-Location" 头值的
String
IllegalArgumentException
- 如果指定的内容位置存在问题
public void setContentType(String contentType)
contentType
- 给出 "Content-Type" 头值的
String
IllegalArgumentException
- 如果指定的内容类型存在问题
public abstract void removeMimeHeader(String header)
header
- 要移除的 MIME 头的字符串名
public abstract void removeAllMimeHeaders()
public abstract String[] getMimeHeader(String name)
String
所标识的头的所有值。
name
- 头的名称;示例:"Content-Type"
String
数组
setMimeHeader(java.lang.String, java.lang.String)
public abstract void setMimeHeader(String name, String value)
注意,RFC822 头只能包含 US-ASCII 字符。
name
- 一个
String
,用于提供要搜索的头的名称
value
- 一个
String
,用于提供将用来设置名称匹配给定名称的头的值
IllegalArgumentException
- 如果指定的 MIME 头名称或值存在问题
public abstract void addMimeHeader(String name, String value)
AttachmentPart
对象。
注意,RFC822 头只能包含 US-ASCII 字符。
name
- 一个
String
,用于提供要添加的头的名称
value
- 一个
String
,用于提供要添加的头的值
IllegalArgumentException
- 如果指定的 MIME 头名称或值存在问题
public abstract Iterator getAllMimeHeaders()
MimeHeader
对象上的迭代器形式,检索此
AttachmentPart
对象的所有头。
AttachmentPart
对象所有 MIME 头的
Iterator
对象
public abstract Iterator getMatchingMimeHeaders(String[] names)
MimeHeader
对象。
names
- 一个
String
数组,带有要返回的 MIME 头的名称
Iterator
对象的形式)
public abstract Iterator getNonMatchingMimeHeaders(String[] names)
MimeHeader
对象。
names
- 一个
String
数组,带有无需返回的 MIME 头的名称
AttachmentPart
对象中的所有 MIME 头,但匹配给定数组中任一名称的 MIME 头除外。以
Iterator
对象的形式返回不匹配的 MIME 头。