![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
#include <SFXSOAPWriter.hpp>
class SFXSOAPWriter : public static_exception< SFCError >;
SFMTYPEDEFCLASS(SFXSOAPWriter)


SFXSOAPWriter は、SOAP メッセージを作成するためのクラスです。
![]() |
注意 |
|---|---|
| このクラスを使って SOAP メッセージを作成するとき、 SFXSOAPWriter::SetBody、SFXSOAPWriter::SetEnvelope、SFXSOAPWriter::SetFault、SFXSOAPWriter::SetFaultDetail などの関数は どのような順序で呼び出しても構いません。 | |
![]() |
Simple Object Access Protocol ( SOAP ) の仕様 |
|---|---|
|
W3C SOAP 最新情報 : Latest SOAP versions ( SOAP 1.1 と SOAP 1.2 をサポートしています。) ※ SOAP Attachment は実装されていません。また、SOAP Fault は SOAP 1.1 だけをサポートします。 | |
例 784. SOAP メッセージの作成
SFXSOAPWriter soapwriter; // SOAP メッセージの各要素を生成するオブジェクト SFCError error; // エラー値を保存する変数 // Envelope 要素を作成する // 名前空間接頭辞: デフォルトは "SOAP-ENV" // SOAP バージョン: SFXSOAPParser::SOAP_VERSION_1_2 の場合、"http://www.w3.org/2003/05/soap-envelope" // SFXSOAPParser::SOAP_VERSION_1_1 の場合、"http://schemas.xmlsoap.org/soap/envelope/" // SOAP エンコーディング: "STANDARD" の場合、"http://schemas.xmlsoap.org/soap/encoding/" // "NONE" の場合、SOAP エンコーディングは何も指定しない SFXXMLElementPtr envelope = soapwriter.SetEnvelope("env", SFXSOAPParser::SOAP_VERSION_1_2, "STANDARD"); // Header 要素と Body 要素を作成する if (envelope) { // xmlns:m= "http://www.example.org/timeouts" 名前空間を追加する error = soapwriter.AddNamespace(envelope, "m", "http://www.example.org/timeouts"); // 名前空間が追加されているか確認する if(error != SFERR_NO_ERROR){ TRACE("-----Envelope_NAMESPACE_ERROR:%d-----", error); } // faultcode、faultstring、および faultactor 要素から構成される SOAP Fault 要素を設定する(デフォルトでは Body 要素の子要素となる) soapwriter.SetFault("testing-fault-code","testing-fault-string","testing-fault-actor"); // SOAP Fault 要素に detail 要素を設定する soapwriter.SetFaultDetail("STANDARD")->SetText("testing-fault-detail-message"); // Header 要素を設定する SFXXMLElementPtr header = soapwriter.SetHeader(); if (header) { // isbn:bookname="ワールドカップサッカー" 属性を追加する error = soapwriter.AddAttribute(header, "bookname", "http://www.example.com/ISBN", "ワールドカップサッカー", "isbn"); // 属性が追加されているか確認する if(error != SFERR_NO_ERROR){ TRACE("-----HEADER_ATTRIBUTE_ERROR:%d-----", error); } // xmlns:isbn="http://www.example.com/ISBN" 名前空間を追加する error = soapwriter.AddNamespace(header, "isbn", "http://www.example.com/ISBN"); // 名前空間が追加されているか確認する if(error != SFERR_NO_ERROR){ TRACE("-----HEADER_NAMESPACE_ERROR:%d-----", error); } // Header 要素に子要素 Upgrade を追加する // Upgrade 要素の名前空間は Header 要素と同じものに設定する SFXXMLElementPtr elem = soapwriter.SetElement(header, "Upgrade", header->GetNamespaceURI(), header->GetPrefix()); if (elem) { // Upgrade 要素に子要素 SupportedEnvelope を設定する elem = soapwriter.SetElement(elem, "SupportedEnvelope", header->GetNamespaceURI(), header->GetPrefix()); // SupportedEnvelope 要素の属性を追加する error = soapwriter.AddAttribute(elem, "qname", "http://schemas.xmlsoap.org/soap/envelope/", "ns1:Envelope"); // 属性が追加されているか確認する if(error != SFERR_NO_ERROR){ TRACE("-----UPGRADE_ATTRIBUTE_ERROR:%d-----", error); } // SupportedEnvelope 要素の名前空間を追加する error = soapwriter.AddNamespace(elem, "ns1", "http://schemas.xmlsoap.org/soap/envelope/"); // 名前空間が追加されているか確認する if(error != SFERR_NO_ERROR){ TRACE("-----UPGRADE_NAMESPACE_ERROR:%d-----", error); } } } // 作成した SOAP メッセージを保存する error = soapwriter.Save("soapwriter.xml"); // 保存されているか確認する if(error != SFERR_NO_ERROR){ TRACE("-----SOAP_SAVE_ERROR:%d-----", error); } }
例 785. 作成した SOAP メッセージ( soapwriter.xml )
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:m="http://www.example.org/timeouts">
<env:Header isbn:bookname="ワールドカップサッカー" xmlns:isbn="http://www.example.com/ISBN">
<env:Upgrade>
<env:SupportedEnvelope qname="ns1:Envelope" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"/>
</env:Upgrade>
</env:Header>
<env:Body>
<env:Fault>
<faultcode>testing-fault-code</faultcode>
<faultstring>testing-fault-string</faultstring>
<faultactor>testing-fault-actor</faultactor>
<detail env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">testing-fault-detail-message</detail>
</env:Fault>
</env:Body>
</env:Envelope>
| コンストラクタ/デストラクタ |
|---|
|
SFXSOAPWriter( Void ) SFXSOAPWriter クラスのコンストラクタです。
|
|
~SFXSOAPWriter( Void ) SFXSOAPWriter クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| SFCError |
AddAttribute(
SFXXMLElementPtr element
, SFXAnsiStringConstRef name
, SFXAnsiStringConstRef uri = SFXAnsiString::EmptyInstance()
, SFXAnsiStringConstRef value = SFXAnsiString::EmptyInstance()
, SFXAnsiStringConstRef prefix = SFXAnsiString::EmptyInstance()
) 要素に属性を追加します。
|
| SFCError |
AddNamespace(
SFXXMLElementPtr element
, SFXAnsiStringConstRef prefix
, SFXAnsiStringConstRef uri
) 要素に名前空間を追加します。
|
| Void |
Reset( Void ) すべての内部変数をリセットします。
|
| SFCError |
Save(
SFXAnsiStringConstRef output
, Bool indent = true
) Save( SFXPathConstRef output , Bool indent = true ) Save( SFXOutputStreamRef output , Bool indent = true ) SOAP メッセージを保存します。
|
| SFXXMLElementPtr |
SetBody(
SFXAnsiStringConstRef encodingstyle = "NONE"
) SOAP メッセージに Body 要素を設定します。
|
| SFXXMLElementPtr |
SetElement(
SFXXMLElementPtr parent
, SFXAnsiStringConstRef name
, SFXAnsiStringConstRef uri = SFXAnsiString::EmptyInstance()
, SFXAnsiStringConstRef prefix = SFXAnsiString::EmptyInstance()
, SFXAnsiStringConstRef text = SFXAnsiString::EmptyInstance()
, SFXAnsiStringConstRef encodingstyle = "NONE"
) 要素に子要素を設定します。
|
| SFXXMLElementPtr |
SetEnvelope(
SFXAnsiStringConstRef prefix = SFXAnsiString::EmptyInstance()
, SFXSOAPParser::SOAP_VERSION version = SFXSOAPParser::SOAP_VERSION_1_1
, SFXAnsiStringConstRef encodingstyle = "NONE"
) SOAP メッセージに Envelope 要素を設定します。
|
| SFXXMLElementPtr |
SetFault(
SFXAnsiStringConstRef faultcode
, SFXAnsiStringConstRef faultstring
, SFXAnsiStringConstRef faultactor = SFXAnsiString::EmptyInstance()
) SOAP メッセージに faultcode、faultstring、および faultactor 要素( Fault 要素)を設定します。
|
| SFXXMLElementPtr |
SetFaultDetail(
SFXAnsiStringConstRef encodingstyle = "NONE"
) SOAP Fault 要素に detail 要素を設定します。
|
| SFXXMLElementPtr |
SetHeader(
SFXAnsiStringConstRef encodingstyle = "NONE"
) SOAP メッセージに Header 要素を設定します。
|
[ public, explicit ] SFXSOAPWriter(Void);
[ public ] ~SFXSOAPWriter(Void);
[ public ] SFCError AddAttribute( SFXXMLElementPtr element // 要素 SFXAnsiStringConstRef name // 属性の名前 SFXAnsiStringConstRef uri = SFXAnsiString::EmptyInstance() // 属性の名前空間 URI SFXAnsiStringConstRef value = SFXAnsiString::EmptyInstance() // 属性の値 SFXAnsiStringConstRef prefix = SFXAnsiString::EmptyInstance() // 属性の名前空間接頭辞 );
[ public ] SFCError AddNamespace( SFXXMLElementPtr element // 要素 SFXAnsiStringConstRef prefix // 名前空間接頭辞 SFXAnsiStringConstRef uri // 名前空間 URI );
[ public ] Void Reset(Void);
[ public ] SFCError Save( SFXAnsiStringConstRef output // ファイル名 Bool indent = true // インデントするかどうか );
[ public ] SFCError Save( SFXOutputStreamRef output // 出力ストリーム Bool indent = true // インデントするかどうか );
[ public ] SFCError Save( SFXPathConstRef output // ファイルパス Bool indent = true // インデントするかどうか );
SOAP メッセージを指定したファイルやストリームに保存します。
ファイルパスのデフォルト ディレクトリはアプレットのホームディレクトリです。
[ public ] SFXXMLElementPtr SetBody( SFXAnsiStringConstRef encodingstyle = "NONE" // SOAP エンコーディングの値 );
SOAP エンコーディングの値です。以下のように定義されています。
| 値 | 意味 |
|---|---|
| "NONE" | SOAP エンコーディングは何も指定されません。 |
| "STANDARD" | "http://schemas.xmlsoap.org/soap/encoding/" を意味します。 |
SOAP メッセージに Body 要素を設定します。Body 要素が既に存在する場合は、設定は行われません。
SOAP エンコーディングとは、文字のエンコーディングのことではなく、SOAP メッセージで使うデータ型を XML 形式としてどのように表現するかを定めるものです。
通常、SOAP エンコーディングは、URI " http://schemas.xmlsoap.org/soap/envelope/ " で定義されるものを使います。
![]() |
SOAP エンコーディングについて |
|---|---|
W3C Simple Object Access Protocol (SOAP) 1.1 : SOAP Encoding | |
[ public ] SFXXMLElementPtr SetElement( SFXXMLElementPtr parent // 親要素 SFXAnsiStringConstRef name // 子要素の名前 SFXAnsiStringConstRef uri = SFXAnsiString::EmptyInstance() // 子要素の名前空間 URI SFXAnsiStringConstRef prefix = SFXAnsiString::EmptyInstance() // 子要素の名前空間接頭辞 SFXAnsiStringConstRef text = SFXAnsiString::EmptyInstance() // 子要素のテキスト内容 SFXAnsiStringConstRef encodingstyle = "NONE" // 子要素の SOAP エンコーディングの値 );
SOAP エンコーディングの値です。以下のように定義されています。
| 値 | 意味 |
|---|---|
| "NONE" | SOAP エンコーディングは何も指定されません。 |
| "STANDARD" | "http://schemas.xmlsoap.org/soap/encoding/" を意味します。 |
[ public ] SFXXMLElementPtr SetEnvelope( SFXAnsiStringConstRef prefix = SFXAnsiString::EmptyInstance() // Envelope 要素の名前空間接頭辞 SFXSOAPParser::SOAP_VERSION version = SFXSOAPParser::SOAP_VERSION_1_1 // SOAP メッセージのバージョン SFXAnsiStringConstRef encodingstyle = "NONE" // Envelope 要素の SOAP エンコーディングの値 );
Envelope 要素の名前空間接頭辞です。デフォルトは "SOAP-ENV" です。
SOAP エンコーディングの値です。以下のように定義されています。
| 値 | 意味 |
|---|---|
| "NONE" | SOAP エンコーディングは何も指定されません。 |
| "STANDARD" | "http://schemas.xmlsoap.org/soap/encoding/" を意味します。 |
SOAP メッセージ に Envelope 要素を設定します。Envelope 要素が既に存在する場合は、設定されません。
[ public ] SFXXMLElementPtr SetFault( SFXAnsiStringConstRef faultcode // faultcode SFXAnsiStringConstRef faultstring // faultstring SFXAnsiStringConstRef faultactor = SFXAnsiString::EmptyInstance() // faultactor );
SOAP メッセージに faultcode、faultstring、および faultactor 要素( Fault 要素)を設定します。 faultcode、faultstring、および faultactor 要素( Fault 要素)が既に存在する場合は、設定されません。
[ public ] SFXXMLElementPtr SetFaultDetail( SFXAnsiStringConstRef encodingstyle = "NONE" // SOAP エンコーディングの値 );
SOAP エンコーディングの値です。以下のように定義されています。
| 値 | 意味 |
|---|---|
| "NONE" | SOAP エンコーディングは何も指定されません。 |
| "STANDARD" | "http://schemas.xmlsoap.org/soap/encoding/" を意味します。 |
[ public ] SFXXMLElementPtr SetHeader( SFXAnsiStringConstRef encodingstyle = "NONE" // SOAP エンコーディングの値 );
SOAP エンコーディングの値です。以下のように定義されています。
| 値 | 意味 |
|---|---|
| "NONE" | SOAP エンコーディングは何も指定されません。 |
| "STANDARD" | "http://schemas.xmlsoap.org/soap/encoding/" を意味します。 |
SOAP メッセージに Header 要素を設定します。Header 要素が既に存在する場合、設定されません。
|
Copyright (C) 2002 - 2009 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|