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 メソッドを使用してください。
目次 索引 |