| Interstage Application Server SOAPサービス ユーザーズガイド |
目次
索引
![]()
|
| 第4章 Messaging方式のアプリケーションの実装 | > 4.3 SAAJ-APIによるSOAPメッセージの処理 |
SOAPMessageオブジェクトには1つのSOAPPartオブジェクトと、0個以上のAttachmentPartオブジェクトを含むことができます。javax.xml.soap.AttachmentPartはそれぞれの添付ファイルを表すオブジェクトです。AttachmentPartオブジェクトを生成するにはSOAPMessage.createAttachmentPartメソッドを使用し、SOAPMessageオブジェクトにAttachmentPartを設定するにはSOAPMessage.addAttachmentPartメソッドを使用します。
SOAPMessageオブジェクトから添付ファイルを取り出すにはSOAPMessage.getAttachmentsメソッドを使用します。またSOAPMessage.countAttachmentsメソッドで添付ファイルの個数を取得できます。
import javax.xml.soap.*;
import java.net.URL;
import java.io.FileInputStream;
import java.util.Iterator;
import javax.activation.DataHandler;
.....
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage msg = mf.createMessage();
SOAPPart part = msg.getSOAPPart();
.....
// AttachmentPartの設定1
// Windowsの場合
URL url = new URL("file:///C:/temp/sample.txt");
// Solaris OE, Linuxの場合
URL url = new URL("file:///temp/sample.txt");
AttachmentPart ap1 = msg.createAttachmentPart( new DataHandler(url));
ap1.setContentType("text/plain");
msg.addAttachmentPart(ap1);
// AttachmentPartの設定2
AttachmentPart ap2 = msg.createAttachmentPart();
// Windowsの場合
FileInputStream fis = new FileInputStream("C:\\temp\\sample.xml");
// Solaris OE, Linuxの場合
FileInputStream fis = new FileInputStream("/tmp/sample.xml");
ap2.setContent( fis, "text/xml");
msg.addAttachmentPart(ap2);
.....
// 添付ファイルの個数を取得
int count = msg.countAttachments();
// AttachmentPartの取得
Iterator it = msg.getAttachments();
while(it.hasNext()){
AttachmentPart ap = (AttachmentPart)it.next();
String contentType = ap.getContentType();
String contentId = ap.getContentId();
Object content = ap.getContent();
.....
}
..... |
AttachmentPartオブジェクトは1つのSOAPMessageオブジェクトに対して複数設定できます。上記の例では、2つのAttachmentPartオブジェクトを設定しています。
AttachmentPartオブジェクトのgetContent / setContentメソッドを使用した場合、使用したクラスに応じてデータ変換が行われるため、受信した添付ファイルのデータが送信元の添付ファイルのデータと異なる場合があります。
送信元と同じデータを受信する必要がある(データ変換を回避したい)場合は、getDataHandler / setDataHandler メソッドを使用してください。
目次
索引
![]()
|