前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0
SFXSOAPServiceProxy
WSDL を利用してプロキシを作成し、ダイナミックバイディングを行うクラスです。
#include <SFXSOAPServiceProxy.hpp>
class SFXSOAPServiceProxy;
SFMTYPEDEFCLASS(SFXSOAPServiceProxy)

協調図

SFXSOAPServiceProxy クラスの協調図

解説

SFXSOAPServiceProxy は、WSDL 文書を使って Web サービスにアクセスするためのクラスです。

[Note] Web Services Description Language ( WSDL ) の仕様

W3C WSDL 1.1 : Web Services Description Language ( WSDL ) 1.1 ( WSDL 1.1 をサポートしています。)

例 783. SFXSOAPServiceProxy クラス ( WSDL ) を使った Web サービス

// WSDL 文書を利用してプロキシを作成し、ダイナミックバイディングを行う変数
SFXSOAPServiceProxy _wsdl;

// サーバーからの返答を受け取るためのコールバック関数を設定する
_wsdl.SetNotifyHandler(OnResultSHP, this);

// Web サービス記述言語 WSDL を設定する
if (_wsdl.SetWSDLDocument("weatherbycity2.xml") == SFERR_NO_ERROR) {

    // Web サービスの名前を設定する
    _wsdl.SetServiveName("WeatherByCity");

    // Web サービスのポート名を設定する
    _wsdl.SetPortName("WeatherByCitySoap");

    // 呼び出す Web サービスとメソッドを設定する
    _wsdl.SetMethodName("GetWeatherByCity");

    // 指定したパラメータの値を設定する
    // Web サービスのユーザープロパティを設定する
    _wsdl.SetParameterValue("UserID", 
                            SFXBuffer(SFXAnsiString("sophia@s-cradle.com")));
    _wsdl.SetParameterValue("Password", 
                            SFXBuffer(SFXAnsiString("*******")));

    // Web サービスのパラメータを設定する
    _wsdl.SetParameterValue("CityName", 
                            SFXBuffer(SFXAnsiString("Washington")));
    _wsdl.SetParameterValue("StateAbbreviationORCountryName", 
                            SFXBuffer(SFXAnsiString("PA")));

    // Web サービスを呼び出す
    _wsdl.Invoke();
}

参照

SFXSOAPWriter | SFXSOAPParser | SFXSOAPRPC

メンバ

コンストラクタ/デストラクタ
SFXSOAPServiceProxy( Void )
SFXSOAPServiceProxy( SFXAnsiStringConstRef wsdl )
SFXSOAPServiceProxy( SFXAnsiStringConstRef wsdl , SFXAnsiStringConstRef service , SFXAnsiStringConstRef port , SFXAnsiStringConstRef method )
SFXSOAPServiceProxy クラスのコンストラクタです。
~SFXSOAPServiceProxy( Void )
SFXSOAPServiceProxy クラスのデストラクタです。
パブリック関数
Void Cancel( Void )
SOAP 通信をキャンセルします。
ACharConstPtr GetMethodName( Void )
Webサービスのメソッド名を取得します。
ACharConstPtr GetPortName( Void )
Web サービスのポート名を取得します。
const SFXSOAPRPC::LPPARAMETER GetResultValueByName( SFXAnsiStringConstRef name )
指定したパラメータの戻り値を取得します。
ACharConstPtr GetServiceName( Void )
Web サービス名を取得します。
UInt32 GetTrustMode( Void )
SSL の検証モードを取得します。
SFCError Invoke( Void )
メソッドを呼び出します。
Bool IsConnecting( Void )
サーバーに接続しているかを判定します。
Void Reset( Void )
すべての内部変数をリセットします。
SFCError SetMethodAttribute( SFXAnsiStringConstRef name , SFXAnsiStringConstRef value )
Web サービスのメソッドに属性を設定します。
Void SetMethodName( SFXAnsiStringConstRef method )
Web サービスのメソッド名を設定します。
Void SetNotifyHandler( SFXSOAPRPC::NotifySPP spp , VoidPtr reference )
戻り値を取得するためのコールバック関数を設定します。
SFCError SetParameterValue( SFXAnsiStringConstRef name , SFXBufferConstRef value , SFXPropertyConstRef attribute = SFXProperty::EmptyInstance() )
パラメータとその属性の内容を設定します。
Void SetPortName( SFXAnsiStringConstRef port )
Web サービスのポート名を設定します。
Void SetServiceName( SFXAnsiStringConstRef service )
Web サービス名を設定します。
Void SetTrustMode( UInt32 param )
SSL の検証モードを設定します。
SFCError SetWSDLDocument( SFXAnsiStringConstRef wsdl )
SetWSDLDocument( SFXPathConstRef wsdl )
WSDL 文書を設定します。

SFXSOAPServiceProxy::SFXSOAPServiceProxy
SFXSOAPServiceProxy クラスのコンストラクタです。
[ public, explicit ]
SFXSOAPServiceProxy(Void);
[ public, explicit ]
SFXSOAPServiceProxy(
    SFXAnsiStringConstRef wsdl   
);
[ public, explicit ]
SFXSOAPServiceProxy(
    SFXAnsiStringConstRef wsdl      
    SFXAnsiStringConstRef service   
    SFXAnsiStringConstRef port      
    SFXAnsiStringConstRef method    
);

SFXSOAPServiceProxy::~SFXSOAPServiceProxy
SFXSOAPServiceProxy クラスのデストラクタです。
[ public ]
~SFXSOAPServiceProxy(Void);

SFXSOAPServiceProxy::Cancel
SOAP 通信をキャンセルします。
[ public ]
Void Cancel(Void);

SFXSOAPServiceProxy::GetMethodName
Webサービスのメソッド名を取得します。
[ public, const ]
ACharConstPtr GetMethodName(Void);

SFXSOAPServiceProxy::GetPortName
Web サービスのポート名を取得します。
[ public, const ]
ACharConstPtr GetPortName(Void);

SFXSOAPServiceProxy::GetResultValueByName
指定したパラメータの戻り値を取得します。
[ public, const ]
const SFXSOAPRPC::LPPARAMETER GetResultValueByName(
    SFXAnsiStringConstRef name   
);

SFXSOAPServiceProxy::GetServiceName
Web サービス名を取得します。
[ public, const ]
ACharConstPtr GetServiceName(Void);

SFXSOAPServiceProxy::GetTrustMode
SSL の検証モードを取得します。
[ public, const ]
UInt32 GetTrustMode(Void);

参照

SFXHTTPConnection::GetTrustMode


SFXSOAPServiceProxy::Invoke
メソッドを呼び出します。
[ public ]
SFCError Invoke(Void);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • Envelope 要素がないとき : SFERR_SOAP_EXPECT_ENVELOPE( 0x699F )
  • Body 要素がないとき : SFERR_SOAP_EXPECT_BODY( 0x69A0 )
  • Envelope 要素が重複しているとき : SFERR_SOAP_REPEATED_ENVELOPE( 0x69A2 )
  • 引数が不正であるとき : SFERR_INVALID_PARAM
  • メモリ不足のとき : SFERR_NO_MEMORY
  • 失敗したとき : SFERR_FAILED

WSDL 文書に関するエラー値は以下になります。

  • 指定した Web サービスがないとき : SFERR_WSDL_EXPECT_SERVICE( 0x69A6 )
  • 指定した Web サービスのポートがないとき : SFERR_WSDL_EXPECT_PORT( 0x69A7 )
  • 指定した Web サービスのポートにバインドできないとき : SFERR_WSDL_EXPECT_BINDING( 0x69A8 )
  • 指定した Web サービスのメソッドがないとき : SFERR_WSDL_EXPECT_OPERATION( 0x69A9 )
  • 該当するポートタイプがないとき : SFERR_WSDL_EXPECT_PORTTYPE( 0x69AA )
  • 該当するメッセージがないとき : SFERR_WSDL_EXPECT_MESSAGE( 0x69AB )

詳細情報: SFCErrorEnum

参照

SFCErrorEnum


SFXSOAPServiceProxy::IsConnecting
サーバーに接続しているかを判定します。
[ public, const ]
Bool IsConnecting(Void);

戻り値

  • 接続しているとき : true
  • 接続していないとき : false

SFXSOAPServiceProxy::Reset
すべての内部変数をリセットします。
[ public ]
Void Reset(Void);

SFXSOAPServiceProxy::SetMethodAttribute
Web サービスのメソッドに属性を設定します。
[ public ]
SFCError SetMethodAttribute(
    SFXAnsiStringConstRef name    // 属性の名前
    SFXAnsiStringConstRef value   // 属性の値
);

SFXSOAPServiceProxy::SetMethodName
Web サービスのメソッド名を設定します。
[ public ]
Void SetMethodName(
    SFXAnsiStringConstRef method   
);

SFXSOAPServiceProxy::SetNotifyHandler
戻り値を取得するためのコールバック関数を設定します。
[ public ]
Void SetNotifyHandler(
    SFXSOAPRPC::NotifySPP spp   // コールバック関数
    VoidPtr reference           // コールバック関数に渡すデータ
);

SFXSOAPServiceProxy::SetParameterValue
パラメータとその属性の内容を設定します。
[ public ]
SFCError SetParameterValue(
    SFXAnsiStringConstRef name                                     // パラメータの名前
    SFXBufferConstRef value                                        // パラメータの値
    SFXPropertyConstRef attribute = SFXProperty::EmptyInstance()   // 属性名と属性値のペアの集合(SFXProperty 型)
);

SFXSOAPServiceProxy::SetPortName
Web サービスのポート名を設定します。
[ public ]
Void SetPortName(
    SFXAnsiStringConstRef port   // ポート名
);

SFXSOAPServiceProxy::SetServiceName
Web サービス名を設定します。
[ public ]
Void SetServiceName(
    SFXAnsiStringConstRef service   // Web サービス名
);

SFXSOAPServiceProxy::SetTrustMode
SSL の検証モードを設定します。
[ public ]
Void SetTrustMode(
    UInt32 param   // SSL 検証モード
);

解説

SSL の検証モード : SFXHTTPConnection::SetTrustMode

参照

SFXHTTPConnection::SetTrustMode


SFXSOAPServiceProxy::SetWSDLDocument
WSDL 文書を設定します。
[ public ]
SFCError SetWSDLDocument(
    SFXAnsiStringConstRef wsdl   // WSDL 文書
);
[ public ]
SFCError SetWSDLDocument(
    SFXPathConstRef wsdl   // ファイルパス
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • パスが不正なとき、または引数が null のとき : SFERR_INVALID_PARAM
  • 解析するファイルが既に開いているとき : SFERR_INVALID_STATE
  • メモリ不足のとき : SFERR_NO_MEMORY
  • 名前空間もしくは名前空間 URI の挿入に失敗したとき、または SFBFileMgr のインスタンスの生成に失敗したとき: SFERR_FAILED

SOAP メッセージの解析結果のエラーコードは以下の通りです。

  • Body 要素がないとき : SFERR_SOAP_EXPECT_BODY( 0x69A0 )
  • 無効な要素があるとき : SFERR_SOAP_REDUNDANT_ELEMENT( 0x69A3 )
  • version 宣言の XML のバージョンに誤りがあるとき : SFERR_XML_BAD_VERSION( 0x6901 )
  • encoding 宣言のエンコーディングに誤りがあるとき : SFERR_XML_BAD_ENCODING( 0x6902 )
  • standalone 文書宣言で指定した値に誤りがあるとき : SFERR_XML_BAD_STANDALONE( 0x6903 )
  • "<!--"、"-->"、"<[["、"]]>"などの文字列に誤りがあるとき : SFERR_XML_BAD_SEQUENCE( 0x6904 )
  • 属性のデフォルトの型に誤りがあるとき : SFERR_XML_BAD_ATTRDEFTYPE( 0x6905 )
  • 属性の型に誤りがあるとき : SFERR_XML_BAD_ATTRTYPE( 0x6907 )
  • "=" マークがないとき : SFERR_XML_EXPECT_EQUALSIGN( 0x6908 )
  • 属性名がないとき : SFERR_XML_EXPECT_ATTRNAME( 0x690A )
  • XML 宣言が完全でないとき : SFERR_XML_EXPECT_DECLSTRING( 0x690C )
  • 要素名がないとき : SFERR_XML_EXPECT_ELEMENTNAME( 0x690D )
  • 処理命令 ( PI ) にターゲット名がないとき : SFERR_XML_EXPECT_PINAME( 0x690E )
  • 空白文字がないとき : SFERR_XML_EXPECT_WHITESPACE( 0x690F )
  • 終了タグがないとき : SFERR_XML_EXPECT_ENDTAG( 0x6912 )
  • XML 宣言に引用する文字列がないとき : SFERR_XML_EXPECT_QUOTEDSTRING( 0x691D )
  • version 宣言で XML のバージョンが指定されていないとき : SFERR_XML_EXPECT_XMLVERSION( 0x691E )
  • encoding 宣言でエンコーディングが指定されていないとき : SFERR_XML_EXPECT_ENCODING( 0x691F )
  • 開始タグが終了していないとき : SFERR_XML_UNTERMINATED_STARTTAG( 0x692D )
  • 処理命令 ( PI ) が終了していないとき : SFERR_XML_UNTERMINATED_PI( 0x692E )
  • コメントが終了していないとき : SFERR_XML_UNTERMINATED_COMMENT( 0x692F )
  • XML 宣言が終了していないとき : SFERR_XML_UNTERMINATED_XMLDECL( 0x6933 )
  • エンティティ参照が終了していないとき : SFERR_XML_UNTERMINATED_ENTITYREF( 0x6934 )
  • CDATA セクションが終了していないとき : SFERR_XML_UNTERMINATED_CDATA( 0x6935 )
  • XML 1.0 / 1.1 以外のバージョンのとき : SFERR_XML_UNSUPPORT_XMLVERSION( 0x6936 )
  • 文字が有効な範囲にないとき : SFERR_XML_INVALID_CHARREF( 0x6938 )
  • 属性値に誤りがあるとき : SFERR_XML_INVALID_ATTRVALUE( 0x6939 )
  • 要素名に誤りがあるとき : SFERR_XML_INVALID_ELEMENTNAME( 0x693A )
  • エンティティ参照の名前に誤りがあるとき : SFERR_XML_INVALID_ENTITYREFNAME( 0x693B )
  • 要素に誤りがあるとき : SFERR_XML_INVALID_ELEMENT( 0x693C )
  • xml:space 属性に誤りがあるとき : SFERR_XML_INVALID_XMLSPACE( 0x693F )
  • 名前空間接頭辞の定義が見つからないとき : SFERR_XML_UNKNOWN_PREFIX( 0x696B )
  • standalone 文書宣言に誤りがあるとき : SFERR_XML_INVALID_INSTANDALONE( 0x6941 )
  • 名前空間接頭辞の定義が見つからないとき : SFERR_XML_UNKNOWN_PREFIX( 0x696B )
  • ">" タグが余分にあるとき : SFERR_XML_MORE_ENDTAG( 0x6971 )
  • タグが対称でないとき : SFERR_XML_TAGSTACK_NOTEMPTY( 0x698C )
  • 処理命令ターゲット名が "xml" であるとき : SFERR_XML_PI_START_NO_WITHXML( 0x698D )
  • DOCTYPE で定義するルート要素に誤りがあるとき : SFERR_XML_ROOTELEM_NOTLIKE_DOCTYPE( 0x698E )
  • 必須となる属性の設定がされていないとき : SFERR_XML_ATTR_NOTPROVIDED( 0x698F )
  • standalone 文書宣言がデフォルトの設定になっていないとき : SFERR_XML_NODEFAULT_ATTR_FORSTANDALONE( 0x6990 )
  • EOF に誤りがあるとき : SFERR_XML_UNEXPECTED_EOF( 0x6995 )
  • 名前空間付きの XML 文書で、要素の名前空間接頭辞で余分な xmlns があるとき : SFERR_XML_REDUNDANT_XMLNS_PREFIX( 0x6997 )

詳細情報: SFCErrorEnum

参照

SFCErrorEnum