Interstage Application Server SOAPサービス ユーザーズガイド
|
目次
索引

|
4.3.2 添付ファイルを使用する場合
添付ファイルは、SOAPメッセージに“添付できる”データです。
以下、サンプルプログラムSampleMsgCL2useAttachment.javaの例を用いて処理を説明します。

import javax.xml.soap.*;
import java.net.URL;
import java.io.*;
import javax.activation.DataHandler;
public class SampleMsgCL2useAttachment
{
public static void main( String[] args )
{
try{
String endPoint = new String("http://localhost/issoapx/services/Sample1");
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection conn = scf.createConnection();
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage msg = mf.createMessage();
SOAPPart part = msg.getSOAPPart();
SOAPEnvelope env = part.getEnvelope();
env.getHeader().detachNode();
SOAPBody body = env.getBody();
SOAPBodyElement elm = body.addBodyElement(
env.createName( "RequestBody", "m", "urn:SampleMsg" ));
elm.addChildElement( env.createName("Request")).
addTextNode("request string...");
elm.addNamespaceDeclaration( "m", "urn:SampleMsg" );
//**(1)**
java.net.URL url1 = new java.net.URL(
"http://www.apache.org/LICENSE.txt");
AttachmentPart ap1 = msg.createAttachmentPart( new DataHandler(url1));
ap1.setContentType("text/plain");
msg.addAttachmentPart(ap1);
//**(2)**
java.net.URL url2 = new java.net.URL("file:///C:/TEMP/sample.xml");
AttachmentPart ap2 = msg.createAttachmentPart( new DataHandler(url2));
ap2.setContentType("text/xml");
msg.addAttachmentPart(ap2);
//**(3)**
java.net.URL url3 = new java.net.URL("file:///C:/TEMP/sample.jpg");
AttachmentPart ap3 = msg.createAttachmentPart( new DataHandler(url3));
ap3.setContentType("image/jpeg");
msg.addAttachmentPart(ap3);
msg.saveChanges();
conn.call( msg, endPoint );
conn.close();
} catch( SOAPException e ) {
System.out.println("SOAPException raised.");
System.out.println(" Message:"+e.getMessage());
System.out.println(" Cause :"+e.getCause());
e.printStackTrace();
} catch( Throwable t ) {
t.printStackTrace();
}
}
} |
■送信するSOAPMessageオブジェクトの取得
送信するSOAPメッセージを表すSOAPMessageオブジェクトを取得します。
SOAPMessageオブジェクトは、MessageFactoryから取得します。
送達保証機能を使用する場合は、ProviderConnectionFactoryを使用して取得します。詳細は“送達保証機能の実装”を参照してください。
■送信するSOAPメッセージの内容設定
SAAJ-APIを使用して、送信するSOAPメッセージを表すSOAPMessageオブジェクトを作成します。
この例では、直接SOAPEnvelopeの内容をプログラムする方法を使用しています。ほかに、既存のXMLデータを使用する方法もあります。詳細は“XMLデータを取り込んで使用する送信アプリケーション”を参照してください。
■送信するSOAPメッセージへの添付ファイルの設定
送信するSOAPメッセージを表すSOAPMessageオブジェクトへ添付ファイルを設定するにはSAAJ-APIを使用します。1つのSOAPメッセージには任意の数の添付ファイルを設定することができます。それぞれの添付ファイルはjavax.xml.soap.AttachmentPartオブジェクトとして表され、SOAPMessage.createAttachmentPartメソッドで生成することができます。サンプルではjavax.activation.DataHandlerオブジェクトを使用して添付ファイルを生成しています。−(1)(2)(3)
また生成されたAttachmentPartオブジェクトはSOAPMessage.addAttachmentPartメソッドによりSOAPMessageオブジェクトに設定されます。
Copyright 2003 FUJITSU LIMITED