- java.lang.Object
-
- javax.xml.soap.AttachmentPart
-
public abstract class AttachmentPart extends Object
一个附件到一个SOAPMessage
对象。SOAPMessage
对象可以包含零个,一个或多个AttachmentPart
对象。 每个AttachmentPart
对象由两部分组成,特定于应用程序的内容和关联的MIME头。 MIME标头由可用于标识和描述内容的名称/值对组成。一个
AttachmentPart
对象必须符合某些标准。- 它必须符合MIME [RFC2045] standards
- 它必须包含内容
- 标题部分必须包括以下标题:
-
Content-Type
此标头标识AttachmentPart
对象的内容中的数据类型,并且必须符合[RFC2045]。 以下是Content-Type标题的示例:Content-Type: application/xml
以下代码行ap
是一个AttachmentPart
对象,设置前一示例中显示的标题。ap.setMimeHeader("Content-Type", "application/xml");
-
AttachmentPart
对象的内容部分没有限制。 内容可以是从简单的纯文本对象到复杂的XML文档或图像文件的任何内容。使用方法
SOAPMessage.createAttachmentPart
创建一个AttachmentPart
对象。 设置其MIME标头后,AttachmentPart
对象将添加到使用方法SOAPMessage.addAttachmentPart
创建的消息。下面的代码片段,其中
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();
- 从以下版本开始:
- 1.6
-
-
构造方法摘要
构造方法 Constructor 描述 AttachmentPart()
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract void
addMimeHeader(String name, String value)
向该AttachmentPart
对象添加具有指定名称和值的MIME标头。abstract void
clearContent()
清除此AttachmentPart
对象的内容。abstract Iterator<MimeHeader>
getAllMimeHeaders()
检索这一切的头AttachmentPart
对象为在一个迭代MimeHeader
对象。abstract InputStream
getBase64Content()
返回一个InputStream
其可以被用来获得的内容AttachmentPart
为Base64编码字符数据,此方法将进行Base64编码,附着和返回的原始字节。abstract Object
getContent()
获取此AttachmentPart
对象的内容作为Java对象。String
getContentId()
获取名称为“Content-ID”的MIME标头的值。String
getContentLocation()
获取名称为“Content-Location”的MIME标头的值。String
getContentType()
获取名称为“Content-Type”的MIME标头的值。abstract DataHandler
getDataHandler()
获取DataHandler
对象的AttachmentPart
对象。abstract Iterator<MimeHeader>
getMatchingMimeHeaders(String[] names)
检索与给定数组中的名称相匹配的所有MimeHeader
对象。abstract String[]
getMimeHeader(String name)
获取由给定的String
标识的标题的所有值。abstract Iterator<MimeHeader>
getNonMatchingMimeHeaders(String[] names)
检索名称与给定数组中的名称不匹配的所有MimeHeader
对象。abstract InputStream
getRawContent()
获取此内容AttachmentPart
对象作为InputStream仿佛调用了到getContent
,没有DataContentHandler
已经登记为content-type
这一点AttachmentPart
。abstract byte[]
getRawContentBytes()
获取AttachmentPart
对象的内容作为byte []数组,就像对getContent
DataContentHandler
已经注册了content-type
,并且没有注册AttachmentPart
。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
。
-
-
-
方法详细信息
-
getSize
public abstract int getSize() throws SOAPException
返回此AttachmentPart
对象中的字节数。- 结果
-
这个
AttachmentPart
对象的大小(以字节为单位),如果大小无法确定,则为-1 - 异常
-
SOAPException
- 如果此附件的内容损坏,如果在尝试确定大小时有异常。
-
clearContent
public abstract void clearContent()
清除此AttachmentPart
对象的内容。 MIME标题部分保持不变。
-
getContent
public abstract Object getContent() throws SOAPException
将此AttachmentPart
对象的内容作为Java对象获取。 返回的Java对象的类型取决于(1)用于解释字节的DataContentHandler
对象,(2)Content-Type
给出的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
对象中,或者是否存在数据转换错误
-
getRawContent
public abstract InputStream getRawContent() throws SOAPException
获取此内容AttachmentPart
对象作为InputStream仿佛调用了到getContent
,没有DataContentHandler
已经登记为content-type
这一点AttachmentPart
。请注意,从返回的InputStream读取将导致消息流中的数据。 调用后续API之前,调用方有责任重新设置InputStream。 如果需要原始附件内容的副本,则应使用
getRawContentBytes()
API。- 结果
-
一个
InputStream
从其中由包含在所述原始数据AttachmentPart
可被访问。 - 异常
-
SOAPException
- 如果没有将内容设置到此AttachmentPart
对象中,或者是否存在数据转换错误。 - 从以下版本开始:
- 1.6,SAAJ 1.3
- 另请参见:
-
getRawContentBytes()
-
getRawContentBytes
public abstract byte[] getRawContentBytes() throws SOAPException
获取此内容AttachmentPart
对象作为byte []数组仿佛呼叫已作出getContent
和无DataContentHandler
已经登记为content-type
此的AttachmentPart
。- 结果
-
一个
byte[]
阵列包含的原始数据AttachmentPart
。 - 异常
-
SOAPException
- 如果在此AttachmentPart
对象中没有设置内容,或者是否存在数据转换错误。 - 从以下版本开始:
- 1.6,SAAJ 1.3
-
getBase64Content
public abstract InputStream getBase64Content() throws SOAPException
返回一个InputStream
,可用于获取AttachmentPart
的内容作为Base64编码字符数据,此方法将base64编码附件的原始字节并返回。- 结果
-
一个
InputStream
从中Base64编码AttachmentPart
可被读取。 - 异常
-
SOAPException
- 如果没有内容设置到此AttachmentPart
对象中,或者是否存在数据转换错误。 - 从以下版本开始:
- 1.6,SAAJ 1.3
-
setContent
public abstract void setContent(Object object, String contentType)
将此附件部分的内容设置为给定的Object
的内容,并将Content-Type
标头的值设置为给定类型。Object
的类型应对应于Content-Type
给出的值。 这取决于所使用的DataContentHandler
对象的特定集合。- 参数
-
object
- 构成此附件部分内容的Java对象 -
contentType
- 指定内容类型的MIME字符串 - 异常
-
IllegalArgumentException
- 如果contentType与内容对象的类型不匹配,或者如果此内容对象没有DataContentHandler
对象,则可能会抛出 - 另请参见:
-
getContent()
-
setRawContent
public abstract void setRawContent(InputStream content, String contentType) throws SOAPException
将此附件部分以使得由包含的内容InputStream
content
并设定的值Content-Type
头中所包含的值contentType
。对getSize()的后续调用可能不是内容大小的精确度量。
- 参数
-
content
- 添加到附件部分的原始数据 -
contentType
- 设置为Content-Type
标头的值 - 异常
-
SOAPException
- 如果在设置内容时出现错误 -
NullPointerException
- 如果content
为空 - 从以下版本开始:
- 1.6,SAAJ 1.3
-
setRawContentBytes
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
- 如果设置内容或内容为空,则出现错误 - 从以下版本开始:
- 1.6,SAAJ 1.3
-
setBase64Content
public abstract void setBase64Content(InputStream content, String contentType) throws SOAPException
将此附件部分从所述的Base64源的内容InputStream
和设置的值Content-Type
头中包含的值contentType
,此方法将首先解码的base64输入并写入到附接所得的原始字节。对getSize()的后续调用可能不是内容大小的精确度量。
- 参数
-
content
- 要添加到附件部分的base64编码数据 -
contentType
- 设置为Content-Type
头的值 - 异常
-
SOAPException
- 如果在设置内容时出现错误 -
NullPointerException
- 如果content
为空 - 从以下版本开始:
- 1.6,SAAJ 1.3
-
getDataHandler
public abstract DataHandler getDataHandler() throws SOAPException
获取此DataHandler
对象的AttachmentPart
对象。- 结果
-
与该
DataHandler
对象关联的AttachmentPart
对象 - 异常
-
SOAPException
- 如果此AttachmentPart
对象中没有数据
-
setDataHandler
public abstract void setDataHandler(DataHandler dataHandler)
将给定DataHandler
对象作为此数据处理程序AttachmentPart
对象。 通常,在传入消息中,数据处理程序将自动设置。 当使用内容创建和填充消息时,可以使用setDataHandler
方法从各种数据源获取数据到消息中。- 参数
-
dataHandler
- 要设置的DataHandler
对象 - 异常
-
IllegalArgumentException
- 如果指定的DataHandler
对象有问题
-
getContentId
public String getContentId()
获取名称为“Content-ID”的MIME标头的值。- 结果
-
一个
String
给出“Content-ID”头或null
的值,如果没有 - 另请参见:
-
setContentId(java.lang.String)
-
getContentLocation
public String getContentLocation()
获取名称为“Content-Location”的MIME标头的值。- 结果
-
一个
String
给出“内容位置”标题的值或null
如果没有
-
getContentType
public String getContentType()
获取名称为“Content-Type”的MIME标头的值。- 结果
-
一个
String
给出了“Content-Type”头或null
的值,如果没有
-
setContentId
public void setContentId(String contentId)
使用给定值设置名称为“Content-ID”的MIME标头。- 参数
-
contentId
- 一个String
给出“Content-ID”头的值 - 异常
-
IllegalArgumentException
- 如果指定的值为contentId
有问题 - 另请参见:
-
getContentId()
-
setContentLocation
public void setContentLocation(String contentLocation)
使用给定值设置名称为“Content-Location”的MIME头。- 参数
-
contentLocation
- 一个String
给出“内容位置”标题的值 - 异常
-
IllegalArgumentException
- 如果指定的内容位置有问题
-
setContentType
public void setContentType(String contentType)
使用给定值设置名称为“Content-Type”的MIME头。- 参数
-
contentType
- aString
给出“Content-Type”头的值 - 异常
-
IllegalArgumentException
- 如果指定的内容类型有问题
-
removeMimeHeader
public abstract void removeMimeHeader(String header)
删除与给定名称相匹配的所有MIME标头。- 参数
-
header
- 要删除的MIME标题的字符串名称
-
removeAllMimeHeaders
public abstract void removeAllMimeHeaders()
删除所有的MIME标题条目。
-
getMimeHeader
public abstract String[] getMimeHeader(String name)
获取由给定的String
标识的标题的所有值。- 参数
-
name
- 标题的名称; 示例:“Content-Type” - 结果
-
一个
String
数组给出了指定头的值 - 另请参见:
-
setMimeHeader(java.lang.String, java.lang.String)
-
setMimeHeader
public abstract void setMimeHeader(String name, String value)
将与给定名称匹配的第一个标题条目更改为给定值,如果没有现有标题匹配,则添加一个新标题。 此方法也会删除所有匹配的头文件,但第一个。请注意,RFC822头文件只能包含US-ASCII字符。
- 参数
-
name
- 一个String
给出要搜索的标题的名称 -
value
- 一个String
给出为名称与给定名称匹配的标题设置的值 - 异常
-
IllegalArgumentException
- 如果指定的MIME名称或值有问题
-
addMimeHeader
public abstract void addMimeHeader(String name, String value)
将具有指定名称和值的MIME标头添加到此AttachmentPart
对象。请注意,RFC822头文件只能包含US-ASCII字符。
- 参数
-
name
- 一个String
给出要添加的标题的名称 -
value
- 一个String
给出要添加的标题的值 - 异常
-
IllegalArgumentException
- 如果指定的mime头名或值有问题
-
getAllMimeHeaders
public abstract Iterator<MimeHeader> getAllMimeHeaders()
检索这一切的头AttachmentPart
对象为在一个迭代MimeHeader
对象。- 结果
-
一个
Iterator
对象与所有的这个AttachmentPart
对象的Mime标头
-
getMatchingMimeHeaders
public abstract Iterator<MimeHeader> getMatchingMimeHeaders(String[] names)
检索与给定数组中的名称相匹配的所有MimeHeader
对象。- 参数
-
names
- 要返回的MIME标题的名称的String
数组 - 结果
-
所有MIME头匹配给定数组中的一个名称作为一个
Iterator
对象
-
getNonMatchingMimeHeaders
public abstract Iterator<MimeHeader> getNonMatchingMimeHeaders(String[] names)
检索名称与给定数组中的名称不匹配的所有MimeHeader
对象。- 参数
-
names
- 具有MIME标题名称的String
数组不被返回 - 结果
-
该
AttachmentPart
对象中的所有MIME标头,除了与给定数组中的一个名称相匹配的对象。 不匹配的MIME标题作为Iterator
对象返回。
-
-