SophiaFramework UNIVERSE 5.3 |
SFXSOAPRPC クラスは、 HTTP-POST トランスポートプロトコルにバインディングされた SOAP-RPC を実装するクラスです。
クライアント側では SOAP 1.1 の仕様に従った SOAP リクエストメッセージが作成され、 HTTP-POST トランスポートプロトコルにより、Web サーバーに送られます。 そして、Web サーバーから SOAP 1.1 の仕様に従った SOAP レスポンスメッセージを受信します。
Simple Object Access Protocol (SOAP) 1.1 の仕様 | |
---|---|
W3C SOAP : Simple Object Access Protocol (SOAP) 1.1 ※ SOAP Attachment は実装されていません。 |
例 847. SOAP-RPC による Web サービス呼び出し
SFMTYPEDEFCLASS(xmlexplainer) class xmlexplainer : public SFCApplication { SFMSEALCOPY(xmlexplainer) private: // SFXSOAPRPC オブジェクトはクラス変数にする SFXSOAPRPC _rpc; public: static SFCInvokerPtr Factory(Void); private: explicit xmlexplainer(Void) static_throws; virtual ~xmlexplainer(Void); virtual Bool HandleEvent(SFXEventConstRef event); virtual Bool HandleRender(SFXEventConstRef event); Void _SFXSOAPRPC(Void); // サーバから返答を受け取るためのコールバック関数(エントリ) static Void OnResultSHP_SOAP(SFCError error, const SFXSOAPRPC::Params& result, const SFXSOAPRPC::FAULT& fault, SFXSOAPParserConstRef soap, VoidPtr reference); // サーバから返答を受け取るためのコールバック関数(本体) Void OnResult_SOAP(SFCError error, const SFXSOAPRPC::Params& result, const SFXSOAPRPC::FAULT& fault, SFXSOAPParserConstRef soap); }; Void xmlexplainer::_SFXSOAPServiceProxy(Void) { // www.s-cradle.com の "Arithmetic" サービスにアクセスするコード: // ※ 組み込み向けシステムの場合、メモリの制約から、WSDL ファイルのサイズは小さい方が望ましい // SFXSOAPServiceProxy クラスが自動生成する SOAP-RPC リクエストメッセージの内容: 2.0 と 3.0 の和を求める // <?xml version="1.0" encoding="UTF-8"?> // <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> // <SOAP-ENV:Body> // <Add xmlns="http://soapsample.s-cradle.com"> // <left>2.0</left> // <right>3.0</right> // </Add> // </SOAP-ENV:Body> // </SOAP-ENV:Envelope> // 呼び出す Web サービスの機能 (メソッド) を設定する // ※ この場合、足し算の結果を求める _rpc.SetMethodName("Add"); // 指定されたパラメータの値を設定する _rpc.AddParameter("left", SFXBuffer(SFXAnsiString("2.0"))); _rpc.AddParameter("right", SFXBuffer(SFXAnsiString("3.0"))); // Web サービスを呼び出す: 同時に、サーバから返答を受け取るためのコールバック関数(エントリ)を設定する // ※ コールバック関数は静的関数でなければいけないので、一旦 OnResultSHP_SOAP 静的関数を呼び出し、 // OnResultSHP_SOAP() 内からコールバック関数の本体である OnResult_SOAP メンバ関数を呼び出す _rpc.Invoke("/soapsample/Arithmetic", "urn:Add", OnResultSHP_SOAP, this); } return; } // サーバから返答を受け取るためのコールバック関数(エントリ) Void xmlexplainer::OnResultSHP_SOAP(SFCError error, const SFXSOAPRPC::Params& result, const SFXSOAPRPC::FAULT& fault, SFXSOAPParserConstRef soap, VoidPtr reference) { // サーバから返答を受け取るためのコールバック関数(実体)を呼び出す static_cast<xmlexplainerPtr>(reference)->OnResult_SOAP(error, result, fault, soap); } // サーバから返答を受け取るためのコールバック関数(実体) Void xmlexplainer::OnResult_SOAP(SFCError error, const SFXSOAPRPC::Params& result, const SFXSOAPRPC::FAULT& fault, SFXSOAPParserConstRef soap) { // サーバから受け取った SOAP-RPC リクエストメッセージの内容は以下の通り: 結果の 5.0 が返却される // <?xml version="1.0" encoding="utf-8"?> // <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> // <soapenv:Body> // <ns:AddResponse xmlns:ns="http://soapsample.s_cradle.com"> // <ns:return>5.0</ns:return> // </ns:AddResponse> // </soapenv:Body> // </soapenv:Envelope> // SOAP-RPC 通信が成功したか判断する if (error == SFERR_NO_ERROR) { // 方法 1: result 引数の値(SFXSOAPRPC::Params 配列)から各要素の値を取得する // ※ SOAP-RPC の結果は SFXSOAPRPC::Params 配列に格納されている // SFXSOAPRPC::Params 配列の列挙子を取得する SFXSOAPRPC::Params::Enumerator para = result.GetFirstEnumerator(); while (para.HasNext()) { // 各要素を取得する SFXSOAPRPC::LPPARAMETER temp = para.GetNext(); // パラメータの名前を取得し表示する TRACE("parameter-name: %s", temp->_name.GetCString()); // パラメータのタイプを取得し表示する TRACE("parameter-type: %d", temp->_type); if (!temp->_value.IsEmpty()) { // パラメータの値を取得し表示する TRACE("parameter-value: %s", ACharConstPtr(temp->_value.GetBuffer())); } } // 方法 2: SFXSOAPServiceProxy::GetResultValueByName 関数で特定のパラメータを取得する // 指定した名前を持つメソッドレスポンス(SFXSOAPRPC::PARAMETER 構造体)を取得する SFXSOAPRPC::LPPARAMETER result = _wsdl.GetResultValueByName("return"); if (result) { // パラメータの名前を取得し表示する パラメータの名前は "return" になる TRACE("result name: %s", result->_name.GetCString()); // パラメータのタイプを取得し表示する TRACE("result type: %d", result->_type); // パラメータの値を取得し表示する (パラメータの値は 6.0 になる) TRACE("result value: %s", ACharConstPtr(result->_value.GetBuffer())); } // 方法 3: soap 引数の値(SFXSOAPParser 型)から SOAP-RPC の結果を取得する // ※ SOAP-RPC の結果 = SOAP メッセージの Body 要素(SOAP Body)の第 1 子要素の第 1 子要素 SFXXMLElementPtr response = soap.GetRPCResult(); // SOAP-RPC の結果を取得し表示する TRACE("result value: %s", response->GetText().GetCString()); } // サーバ側からのエラーメッセージを取得する else if (error == SFERR_SOAP_FAULT_MESSAGE) { // faultactor 要素が空でない場合 if (!fault._faultactor.IsEmpty()) // faultactor 要素を表示する TRACE("faultactor: %s", fault._faultactor.GetCString()); // faultcode 要素が空でない場合 if (!fault._faultcode.IsEmpty()) // faultcode 要素を表示する TRACE("faultcode: %s", fault._faultcode.GetCString()); // faultstring 要素が空でない場合 if (!fault._faultstring.IsEmpty()) // faultstring 要素を表示する TRACE("faultstring: %s", fault._faultstring.GetCString()); // detail 要素が null でない場合 if (fault._faultdetail) { // detail 要素を表示する TRACE("faultstring: %s", fault._faultdetail->GetText().GetCString()); } } return; }
コンストラクタ/デストラクタ |
---|
SFXSOAPRPC( Void ) SFXSOAPRPC クラスのコンストラクタです。
|
SFXSOAPRPC(
SFXAnsiStringConstRef targeturi
, SFXAnsiStringConstRef prefix
, SFXAnsiStringConstRef method
, ParamsConstRef params
, SFXAnsiStringConstRef encodingstyle = "NONE"
, SFXAnsiStringConstRef port = SFXAnsiString::EmptyInstance()
) SFXSOAPRPC クラスのコンストラクタです。
|
~SFXSOAPRPC( Void ) SFXSOAPRPC クラスのデストラクタです。
|
パブリック関数 | |
---|---|
SFCError |
AddAttibute(
SFXAnsiStringConstRef param
, SFXAnsiStringConstRef name
, SFXAnsiStringConstRef value
, PARAMETER::Mode mode = PARAMETER::IN
) Web サービスのパラメータの属性を追加します。
|
SFCError |
AddMethodAttribute(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef value
) Web サービスのメソッドの属性を追加します。
|
SFCError |
AddParameter(
SFXAnsiStringConstRef name
, SFXBufferConstRef value
, PARAMETER::Types type = PARAMETER::XSD_STRING
, PARAMETER::Mode mode = PARAMETER::IN
) Web サービスのパラメータを追加します。
|
Void |
Cancel( Void ) SOAP-RPC をキャンセルします。
|
ACharConstPtr |
GetEncodingStyle( Void ) SOAP エンコーディングを取得します。
|
ACharConstPtr |
GetMethodName( Void ) Webサービスのメソッド名を取得します。
|
ParamsConstPtr |
GetParams( Void ) Web サービスのメソッド呼び出しのパラメータのリストを取得します。
|
const LPPARAMETER |
GetResultValueByName(
SFXAnsiStringConstRef name
) 指定された名前と一致する Web サービスのメソッドレスポンスのパラメータを取得します。
|
ParamsConstPtr |
GetResultValues( Void ) Web サービスのメソッドレスポンスのパラメータのリストを取得します
|
ACharConstPtr |
GetTargetObjectURI( Void ) Web サービスのメソッドの名前空間 URI を取得します。
|
UInt32 |
GetTrustMode( Void ) HTTPS 通信の SSL 認証モードを取得します。
|
SFCError |
Invoke(
SFXAnsiStringConstRef url
, SFXAnsiStringConstRef SOAPActionURI
, NotifySPP spp = null
, VoidPtr reference = null
) Web サービスのメソッドを呼び出します。
|
SFCError |
Invoke(
SFXAnsiStringConstRef url
, SFXAnsiStringConstRef SOAPActionURI
, SFXAnsiStringConstRef input
, NotifySPP spp = null
, VoidPtr reference = null
) Web サービスのメソッドを呼び出します。
|
Bool |
IsConnecting( Void ) Web サーバーに接続しているか判定します。
|
Void |
RemoveAllParams( Void ) Web サービスのメソッドのすべてのパラメータを削除します。
|
Void |
Reset( Void ) すべての内部変数をリセットします。
|
Void |
SetEncodingStyle(
SFXAnsiStringConstRef encodingstyle
) SOAP エンコーディングを設定します。
|
SFXXMLElementPtr |
SetHeader(
SFXAnsiStringConstRef encodingstyle = "NONE"
) SOAP メッセージの Header 要素(SOAP Header)を設定します。
|
Void |
SetMethodName(
SFXAnsiStringConstRef method
) Web サービスのメソッド名を設定します。
|
Void |
SetNotifyHandler(
NotifySPP spp
, VoidPtr reference
) SOAP-RPC の戻り値(SOAP レスポンス)を取得するためのコールバック関数とコールバック関数に渡すデータを設定します。
|
SFCError |
SetParams(
ParamsConstRef params
) Web サービスのメソッド呼び出しのパラメータのリストを設定します。
|
Void |
SetTargetObjectURI(
SFXAnsiStringConstRef targeturi
, SFXAnsiStringConstRef prefix = SFXAnsiString::EmptyInstance()
) Web サービスのメソッドの名前空間 URI とその名前空間接頭辞を設定します。
|
Void |
SetTrustMode(
UInt32 param
) HTTPS 通信の SSL 認証モードを設定します。
|
型 |
---|
FAULT SOAP Fault を表す構造体です。
|
LPFAULT SFXSOAPRPC::FAULT 構造体のポインタ型を表します。
|
LPPARAMETER SFXSOAPRPC::PARAMETER 構造体のポインタ型です。
|
NotifySPP
SFXSOAPRPC::Invoke 関数に指定するコールバック関数の型です。
|
PARAMETER メソッド呼び出しとメソッドレスポンスのパラメータを表す構造体です。
|
Params パラメータ構造体へのポインタの配列を表します。
|
[ public, explicit ] SFXSOAPRPC(Void);
[ public, explicit ] SFXSOAPRPC( SFXAnsiStringConstRef targeturi // 名前空間 URI SFXAnsiStringConstRef prefix // 名前空間接頭辞 SFXAnsiStringConstRef method // メソッド名 ParamsConstRef params // パラメータ SFXAnsiStringConstRef encodingstyle = "NONE" // SOAP エンコーディング SFXAnsiStringConstRef port = SFXAnsiString::EmptyInstance() // Web サービスのポート名 );
このコンストラクタは、この SOAP-RPC を初期化します。
具体的には、以下のことを行います。
引数を指定する場合は、以下の設定も行います。
SFXSOAPRPC::SetTargetObjectURI | SFXSOAPRPC::SetEncodingStyle | SFXSOAPRPC::IsConnecting | SFXSOAPRPC::SetTrustMode | SFXSOAPRPC::SetMethodName | SFXSOAPRPC::AddParameter |
[ public ] ~SFXSOAPRPC(Void);
[ public ] SFCError AddAttibute( SFXAnsiStringConstRef param // パラメータ名 SFXAnsiStringConstRef name // 属性名 SFXAnsiStringConstRef value // 属性の値 PARAMETER::Mode mode = PARAMETER::IN // 属性のモード(デフォルト値: 入力モード) );
この関数は、Web サービスのメソッド呼び出しまたはメソッドレスポンスのパラメータに指定された属性名と属性値を追加します。
デフォルトの設定では、Web サービスのメソッド呼び出しのパラメータに指定された属性名と属性値を追加します。
[ public ] SFCError AddMethodAttribute( SFXAnsiStringConstRef name // 属性の名前 SFXAnsiStringConstRef value // 属性の値 );
この関数は、Web サービスのメソッドの属性を追加します。
[ public ] SFCError AddParameter( SFXAnsiStringConstRef name // パラメータ名 SFXBufferConstRef value // パラメータの値 PARAMETER::Types type = PARAMETER::XSD_STRING // パラメータのタイプ(デフォルト値: 文字列) PARAMETER::Mode mode = PARAMETER::IN // パラメータのモード(デフォルト値: 入力モード): デフォルトの設定では、メソッド呼び出しのパラメータを追加します。 );
この関数は、Web サービスのメソッド呼び出しまたはメソッドレスポンスのパラメータを追加します。
デフォルトの設定では、Web サービスのメソッド呼び出しのパラメータを追加します。
SFXSOAPRPC rpc; rpc.AddParameter("Index", SFXBuffer(SFXAnsiString("1")), SFXSOAPRPC::PARAMETER::SOAP_INT, SFXSOAPRPC::PARAMETER::IN );
[ public ] Void Cancel(Void);
この関数は、この SOAP-RPC をキャンセルします。
具体的には、以下のことを行います。
注意 | |
---|---|
この関数は、SFXSOAPRPC::Reset 関数から呼び出されます。 |
SFXSOAPRPC::RemoveAllParams | SFXSOAPRPC::AddParameter | SFXSOAPRPC::Invoke | SFXSOAPRPC::IsConnecting | SFXSOAPRPC::SetTrustMode | SFXSOAPRPC::Reset
[ public, const ] ACharConstPtr GetEncodingStyle(Void);
SOAP エンコーディングの値
この関数は、SOAP エンコーディングを取得します。
[ public, const ] ACharConstPtr GetMethodName(Void);
Web サービスのメソッド名
この関数は、Webサービスのメソッド名を取得します。
[ public, const ] ParamsConstPtr GetParams(Void);
Web サービスのメソッド呼び出しのパラメータのリスト(SFXSOAPRPC::Params)
この関数は、Web サービスのメソッド呼び出しのパラメータのリスト(SFXSOAPRPC::Params)を取得します。
SFXSOAPRPC _rpc; // SOAP-RPC 変数 SFXSOAPRPC::ParamsConstPtr lp; lp = _rpc.GetParams(); // メソッド呼び出しのパラメータのリストを取得する SFXSOAPRPC::LPPARAMETER item; item = lp->Get(0); // 最初の要素を取得する TRACE("%s", item->_name.GetCString()); // パラメータの名前を出力する TRACE("%s", item->_value.GetBuffer()); // パラメータの値を出力する
注意 | |
---|---|
SFXSOAPRPC::LPPARAMETER は、 SFXSOAPRPC::PARAMETER のポインタ型です。 |
[ public, const ] const LPPARAMETER GetResultValueByName( SFXAnsiStringConstRef name // パラメータの名前 );
指定された名前と一致する Web サービスのメソッドレスポンスのパラメータ(SFXSOAPRPC::LPPARAMETER)
この関数は、指定された名前と一致する Web サービスのメソッドレスポンスのパラメータを取得します。
注意 | |
---|---|
同じ名前のパラメータが複数存在する場合、最後のパラメータの値だけが保存されます。 |
[ public, const ] ParamsConstPtr GetResultValues(Void);
Web サービスのメソッドレスポンスのパラメータのリスト(SFXSOAPRPC::Params)
この関数は、Web サービスのメソッドレスポンスのパラメータのリストを取得します。
注意 | |
---|---|
この関数の戻り値は、 SFXSOAPRPC::SetNotifyHandler / SFXSOAPRPC::Invoke 関数の spp 引数に指定したコールバック (SFXSOAPRPC::NotifySPP 関数) の result 引数に通知される内容と同じです。 |
SFXSOAPRPC _rpc; // SFXSOAPRPC オブジェクト // 以下の内容は、SOAP-RPC のコールバック内で実行することを想定している SFXSOAPRPC::ParamsConstPtr lp; lp = _rpc.GetResultValues(); // メソッドレスポンスのパラメータのリストを取得する SFXSOAPRPC::LPPARAMETER item; item = lp->Get(0); // 最初の要素を取得する TRACE("%s", item->_name.GetCString()); // パラメータの名前を出力する TRACE("%s", item->_value.GetBuffer()); // パラメータの値を出力する
SFXSOAPRPC::SetNotifyHandler | SFXSOAPRPC::Invoke | SFXSOAPRPC::Params | SFXSOAPRPC::LPPARAMETER | SFXSOAPRPC::PARAMETER | SFXSOAPRPC::NotifySPP
[ public, const ] ACharConstPtr GetTargetObjectURI(Void);
この関数は、Web サービスのメソッドの名前空間 URI を取得します。
[ public, const ] UInt32 GetTrustMode(Void);
SSL 認証モード
この関数は、HTTPS 通信の SSL 認証モードを取得します。
以下の 4 種類の SSL 認証モードの何れかが返却されます。
[ public ] SFCError Invoke( SFXAnsiStringConstRef url // Web サービスの URL SFXAnsiStringConstRef SOAPActionURI // HTTP プロトコルバインディングヘッダーの SOAPAction 属性値 NotifySPP spp = null // コールバック関数(デフォルト値: null) VoidPtr reference = null // コールバック関数に渡すデータ(デフォルト値: null) );
[ public ] SFCError Invoke( SFXAnsiStringConstRef url // Web サービスの URL SFXAnsiStringConstRef SOAPActionURI // HTTP プロトコルバインディングヘッダーの SOAPAction 属性値 SFXAnsiStringConstRef input // SOAP Envelope ファイルのパス: SOAP Envelope 要素をルートとする XML 文書のファイル NotifySPP spp = null // コールバック関数 VoidPtr reference = null // コールバック関数に渡すデータ(参照値) );
Web サービスの URL を指定します。
SOAP メッセージのプロトコルバインディングヘッダーの SOAPAction 属性の URI を指定します。
SOAP Envelope ファイルのパスを指定します。 SOAP Envelope ファイルとは、SOAP Envelope 要素をルートとする XML 文書のファイルのことです。
(※)input 引数は、SOAP Envelope を手動で作成する場合に利用します。
Web サービスのメソッド呼び出し完了後に呼び出されるコールバック関数を指定します。
Web サービスのメソッド呼び出し完了後に呼び出されるコールバック関数が参照するデータを指定します。
この関数は、指定された Web サービスのメソッドを呼び出します(HTTP-POST プロトコルで HTTP 接続を行います)。
input 引数で SOAP Envelope ファイルのパスを指定するタイプの場合、 予め SOAP Envelope 要素をルートとする XML 文書を作成し、 ファイルに保存しておく必要があります。
一方、input 引数を使用しないタイプでは、 SFXSOAPRPC クラスの各種関数を使用して設定した内容で SOAP Envelope が自動的に作成されます。
Web サービスの呼び出しが完了すると、 引数に指定したコールバック関数に結果が通知されます。
SFXSOAPRPC::SetNotifyHandler 関数 | |
---|---|
spp / reference 引数に null を指定して この関数を呼び出した場合、 あるいは、これらの引数を指定せずにこの関数を呼び出した場合、 SFXSOAPRPC::SetNotifyHandler 関数で設定したコールバック関数が呼び出され、 このコールバック関数に SOAP-RPC の戻り値(SOAP レスポンス)が通知されます。 |
プロトコルバインディング | |
---|---|
SFXSOAPRPC クラスでは、 SOAP メッセージは HTTP-POST トランスポートプロトコルにバインディングされます。 |
SOAP 1.1 サポート | |
---|---|
SFXSOAPRPC クラスは、 SOAP 1.1 のサポートなので、HTTP プロトコルバインディングヘッダーの Content-Type フィールドには、 "text/xml; charset=utf-8" が設定されます。 SOAPActionURI 引数には、 HTTP プロトコルバインディングヘッダーの SOAPAction ヘッダーフィールドを指定することも可能です。 |
HTTPS 通信の SSL 認証モード | |
---|---|
SFXSOAPRPC::SetTrustMode 関数で設定した HTTPS 通信 SSL 認証モードは、 この関数内で SFXHTTPConnection::SetTrustMode 関数を呼び出して実際に設定されます。 この SSL 認証モードは、コールバック関数の実行が完了するまで有効です。 |
Web サーバーの接続状態 | |
---|---|
SFXSOAPRPC::Invoke 関数を呼び出してからコールバック関数の実行が完了するまでは、 SFXSOAPRPC::IsConnecting 関数によって得られる Web サーバーの接続状態は ON になったままです。 コールバック関数の実行が完了した後、OFF になります。 |
SFXSOAPRPC::SetNotifyHandler | SFXSOAPRPC::SetTrustMode | SFXSOAPRPC::SetEncodingStyle | SFXSOAPRPC::SetHeader | SFXSOAPRPC::SetMethodName | SFXSOAPRPC::AddMethodAttribute | SFXSOAPRPC::SetParams | SFXSOAPRPC::AddParameter | SFXSOAPRPC::AddAttibute | SFXSOAPRPC::SetTargetObjectURI | SFXSOAPRPC::IsConnecting | SFXHTTPConnection::Open | SFXHTTPConnection::Connect | SFXHTTPConnection::SetTrustMode | SFXSOAPRPC::NotifySPP
[ public, const ] Bool IsConnecting(Void);
この関数は、Web サーバーに接続しているか判定します。
注意 | |
---|---|
SFXSOAPRPC::Invoke 関数を呼び出してから SFXSOAPRPC::Invoke 関数呼び出し時、または SFXSOAPRPC::SetNotifyHandler 関数で指定したコールバック関数の実行が完了するまでが Web サーバーに接続している状態になります。 |
[ public ] Void RemoveAllParams(Void);
この関数は、Web サービスのメソッド呼び出しとメソッドレスポンスのパラメータをすべて削除します。
[ public ] Void Reset(Void);
この関数は、この SOAP-RPC をキャンセルし、すべての内部変数をリセットします。
具体的には、以下のことを行います。
SFXSOAPRPC::Cancel | SFXSOAPRPC::SetEncodingStyle | SFXSOAPRPC::SetMethodName | SFXSOAPRPC::SetTargetObjectURI | SFXSOAPRPC::AddMethodAttribute | SFXSOAPRPC::SetNotifyHandler | SFXSOAPRPC::SFXSOAPRPC
[ public ] Void SetEncodingStyle( SFXAnsiStringConstRef encodingstyle // SOAP エンコーディング );
SOAP エンコーディングの値を指定します(デフォルト値: "NONE")。
この関数は、SOAP エンコーディングを設定します。
以下の値を設定することも可能です(デフォルトは "NONE" です)。
値(文字列) | 意味 |
---|---|
"NONE" | SOAP エンコーディングは何も指定されません(デフォルト)。 |
"STANDARD" | "http://schemas.xmlsoap.org/soap/encoding/" を意味します。 |
SOAP エンコーディング | |
---|---|
SOAP エンコーディングとは、文字のエンコーディングのことではなく、 SOAP メッセージで使うデータ型を XML 形式としてどのように表現するかを定めるものです。 通常、SOAP エンコーディングは、URI " http://schemas.xmlsoap.org/soap/envelope/ " で定義されるものを使います。 W3C Simple Object Access Protocol (SOAP) 1.1: SOAP Encoding |
[ public ] SFXXMLElementPtr SetHeader( SFXAnsiStringConstRef encodingstyle = "NONE" // SOAP エンコーディング );
SOAP エンコーディングの値を指定します(デフォルト値: "NONE")。
Header 要素(Element ノード)
この関数を実行後、 static_exception::static_catch 関数により取得できる、エラー値は以下の通りです。
この関数は、SOAP メッセージの Header 要素(SOAP Header)を設定します。
内部的に SFXSOAPWriter::SetHeader 関数を呼び出します。
encodingstyle 引数に指定できる SOAP エンコーディングの値は、以下の通りです。
値 | 意味 |
---|---|
"NONE" | SOAP エンコーディングは何も指定されません。 |
"STANDARD" | "http://schemas.xmlsoap.org/soap/encoding/" を意味します。 |
SOAP エンコーディング | |
---|---|
SOAP エンコーディングとは、文字のエンコーディングのことではなく、 SOAP メッセージで使うデータ型を XML 形式としてどのように表現するかを定めるものです。 通常、SOAP エンコーディングは、URI " http://schemas.xmlsoap.org/soap/envelope/ " で定義されるものを使います。 W3C Simple Object Access Protocol (SOAP) 1.1: SOAP Encoding |
[ public ] Void SetMethodName( SFXAnsiStringConstRef method // メソッド名 );
この関数は、Web サービスのメソッド名を設定します。
[ public ] Void SetNotifyHandler( NotifySPP spp // コールバック関数(デフォルト値: null) VoidPtr reference // コールバック関数に渡すデータ(デフォルト値: null) );
この関数は、SOAP-RPC の戻り値(SOAP レスポンス)を取得するためのコールバック関数とコールバック関数に渡すデータを設定します。
デフォルト値: null
注意 | |
---|---|
SOAP-RPC の戻り値(SOAP レスポンス)は、 SFXSOAPRPC::Invoke 関数で指定するコールバック関数で取得することも可能です。 spp 引数(コールバック関数)と reference 引数(コールバック関数に渡すデータ)に null を指定して SFXSOAPRPC::Invoke 関数を呼び出した場合、 あるいは、これらの引数を指定せずに SFXSOAPRPC::Invoke 関数を呼び出した場合、 この関数で設定したコールバック関数が SOAP-RPC の戻り値(SOAP レスポンス)を取得します。 |
[ public ] SFCError SetParams( ParamsConstRef params // パラメータ );
この関数は、Web サービスのメソッド呼び出しのパラメータのリスト(SFXSOAPRPC::Params)を設定します。
[ public ] Void SetTargetObjectURI( SFXAnsiStringConstRef targeturi // 名前空間 URI SFXAnsiStringConstRef prefix = SFXAnsiString::EmptyInstance() // 名前空間接頭辞 );
この関数は、Web サービスのメソッドの名前空間 URI とその名前空間接頭辞を設定します。
SSL 認証モードを指定します。
この関数は、HTTPS 通信の SSL 認証モードを設定します。
SOAP メッセージは、HTTP/HTTPS 通信によりクライアントとサーバー間でやり取りされます。 この関数は、HTTPS 通信を行う場合の SSL 認証モードを設定します。
デフォルト値: SSL_TRUST_MODE_FAIL
設定可能な SSL 認証モードは、 以下の 4 種類です(参照: BREW API ISSL_NegotiateV)。
設定された値は、 SFXSOAPRPC::Invoke 関数、または SFXSOAPRPC::Cancel 関数が呼び出されるまで有効です。
注意 | |
---|---|
実際に SSL 認証モードが設定されるタイミングは、 SFXSOAPRPC::Invoke 関数内で SFXHTTPConnection::SetTrustMode 関数が呼び出されたときです。 |
typedef struct SFXSOAPRPC::_Fault SFXSOAPRPC::FAULT typedef struct _Fault { SFXAnsiString _faultactor; // faultactor 要素 SFXAnsiString _faultcode; // faultcode 要素 SFXAnsiString _faultstring; // faultstring 要素 SFXXMLElementPtr _faultdetail; // faultdetail 要素 } FAULT;
SOAP メッセージの Fault 要素(SOAP Fault)には、SOAP リクエスト処理中に発生したエラーの内容が返されます。 Fault 要素は、SOAP メッセージの Body 要素(SOAP Body)の子要素としてひとつだけ存在します。
SOAP Fault は、faultcode 要素、faultstring 要素、faultactor 要素、detail 要素の順に 4 つの子要素から構成されます。
SOAP Fault | |
---|---|
Simple Object Access Protocol(SOAP) 1.1(W3C): SOAP Fault SOAP Tutorial: SOAP Fault Element |
※ SophiaFramework UNIVERSE では、SOAP Fault は SOAP 1.1 だけがサポートされます。
変数 | 説明 |
---|---|
_faultcode | [必須]SOAP レスポンスを受け取ったアプリケーションが SOAP リクエスト中に発生したエラー内容を判断するためのコードです。 |
_faultstring | [必須]人間が理解できるメッセージとして表現されるエラー内容です。 |
_faultactor | エラーの発生元の URI です。 |
_faultdetail | アプリケーション処理のためのメッセージとして表現されるエラー内容です。 |
SFXSOAPRPC::LPFAULT | SFXSOAPParser::GetFault | SFXSOAPParser::GetFaultActor | SFXSOAPParser::GetFaultCode | SFXSOAPParser::GetFaultDetail | SFXSOAPParser::GetFaultString
typedef struct SFXSOAPRPC::_Fault * SFXSOAPRPC::LPFAULT typedef struct _Fault { SFXAnsiString _faultactor; // faultactor 要素 SFXAnsiString _faultcode; // faultcode 要素 SFXAnsiString _faultstring; // faultstring 要素 SFXXMLElementPtr _faultdetail; // faultdetail 要素 } *LPFAULT;
typedef struct SFXSOAPRPC::_Parameter * SFXSOAPRPC::LPPARAMETER typedef struct _Parameter { enum Types { XSD_STRING, XSD_FLOAT, XSD_BOOLEAN, XSD_DOUBLE, XSD_INTEGER, XSD_INT, XSD_LONG, XSD_SHORT, XSD_DECIMAL, XSD_BASE64, XSD_HEXBINARY, XSD_BYTE, XSD_DATETIME, XSD_QNAME, SOAP_STRING, SOAP_BOOLEAN, SOAP_DOUBLE, SOAP_BASE64, SOAP_FLOAT, SOAP_INT, SOAP_LONG, SOAP_SHORT, SOAP_BYTE, SOAP_ARRAY, UNKNOWN }; enum Mode { IN, INOUT, OUT }; Types _type; // タイプ Mode _mode; // 入出力モード SFXAnsiString _name; // 名前 SFXBuffer _value; // 値 SFXProperty _attrlist; // 属性情報 } *LPPARAMETER;
SFXSOAPRPC::PARAMETER 構造体のポインタ型です。
typedef Void(* SFXSOAPRPC::NotifySPP)(SFCError error, const Params &result, const FAULT &fault, SFXSOAPParserConstRef soap, VoidPtr reference)
SFXSOAPRPC::Invoke 関数実行中に発生したエラー値が渡されます。
コールバック関数に渡される SOAP-RPC の戻り値です。
コールバック関数に渡される SOAP Fault(構造体)です。
SOAP レスポンスが DOM ツリーとして渡されます。
コールバック関数が参照するデータです。
typedef struct SFXSOAPRPC::_Parameter SFXSOAPRPC::PARAMETER typedef struct _Parameter { enum Types { XSD_STRING, XSD_FLOAT, XSD_BOOLEAN, XSD_DOUBLE, XSD_INTEGER, XSD_INT, XSD_LONG, XSD_SHORT, XSD_DECIMAL, XSD_BASE64, XSD_HEXBINARY, XSD_BYTE, XSD_DATETIME, XSD_QNAME, SOAP_STRING, SOAP_BOOLEAN, SOAP_DOUBLE, SOAP_BASE64, SOAP_FLOAT, SOAP_INT, SOAP_LONG, SOAP_SHORT, SOAP_BYTE, SOAP_ARRAY, UNKNOWN }; enum Mode { IN, INOUT, OUT }; Types _type; // タイプ Mode _mode; // 入出力モード SFXAnsiString _name; // 名前 SFXBuffer _value; // 値 SFXProperty _attrlist; // 属性情報 } PARAMETER;
メソッド呼び出しとメソッドレスポンスのパラメータを表す構造体です。
変数 | 説明 |
---|---|
_type | パラメータのタイプ |
_mode | パラメータの入出力モード |
_name | パラメータの名前 |
_value | パラメータの値(SFXBuffer インスタンス) |
_attrlist | パラメータの属性情報 |
_type の値
スキーマ定義用
SOAP 定義用
_mode の値
_attrlist はパラメータの属性のリストです。 パラメータの属性を保存するには SFXSOAPRPC::AddAttibute 関数を呼び出します。
SFMTYPEDEFALIAS(SFXArray<LPPARAMETER>, Params)
パラメータ構造体へのポインタの配列を表します。
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |