ホーム > 製品情報 > SophiaFramework UNIVERSE > SophiaFramework 4.0

SophiaFramework 最新情報

SophiaFramework 4.0    − WSDL / SOAP / XML 搭載 −

TCP ソケットを扱う SFXTCPSocket ( SSL 対応 ) やファイルを扱う SFXFile など、ネットワークとファイルのクラスについて、BREW API を意識せずに、 ストリームを使って抽象的にプログラミングできるようになりました。

また、XML パーサーである SFXXMLDOMParser と SFXXMLSAXParser や、SOAP 通信の SFXSOAPParser などの XML ミドルウェアを搭載し、モバイル Web2.0 に対応しました。 BREW では、世界初となる WSDL 機能 SFXSOAPServiceProxy ( HTTPS 対応 ) が利用可能になりました。

SophiaFramework 4.0 新着情報

2006/12/15、SophiaFramework 4.0.4 リリース

GETAPPINSTANCE() 関数を使用する BREW エクステンションも利用可能になりました。…

2006/11/10、SophiaFramework 4.0.3 リリース

UTF-8、EUC-JP、Shift_JIS などのエンコーディングと文字コード変換をサポートするクラスを追加しました。 リングバッファサイズを意識せずに読み書きできるようにストリームを機能拡張しました。…

2006/10/06、SophiaFramework 4.0.2 リリース

SOAP 通信 と WSDL 関連クラスが HTTPS に対応し、セキュアな Web サービスが実現可能となりました。

2006/10/06、HTTPS対応 セキュア Web サービスなど、サンプルコード公開

HTTPS 対応 セキュア Web サービス、UDP ソケット通信プログラミング、POP3 / SMTP メール送受信処理のサンプルコードを公開しました。

2006/09/29、SSL ソケット通信プログラミング、サンプルコード公開

SSL 処理をシンプルに記述できる SSL ソケットクラス のサンプルコードを公開しました。

SSL : Secure Socket Layer の略。情報を暗号化して送受信するためのインターネットプロトコル。

2006/08/08、SophiaFramework を 4.0 にバージョンアップ

世界で初めて、Web サービスへの WSDL でのアクセスを可能にする XML ミドルウェアを搭載しました。

SophiaFramework 4.0 新機能解説

SophiaFramework 3.0 では、ネットワークやファイルの操作で BREW API に依存せざるを得ない場合がありました。

例えば、ファイルの削除やリネーム、ディレクトリの列挙、ホスト名から IP アドレスへの変換は、 C++ ラッパー経由で明示的に BREW API にアクセスしなければいけませんでした。

SophiaFramework 4.0 では、ネットワークやファイルの操作に関して、 BREW API を意識することなく、ストリームを使ってデバイス非依存の抽象的なプログラミングが可能になりました。

さらに DOM / SAX をサポートする XML パーサー、SOAP RPC を含む SOAP 通信、WSDL のサポートなど、 Web サービス にアクセスする BREW アプリを開発するのに必要な XML 関連のクラスがラインナップされました。

SophiaFramework 4.0 : 主な変更点

新しいクラス

新しいクラスの効用

SFXStorage

SFXFile, SFXTCPSocket クラスなどのストレージクラスを表すインターフェースクラスです。

SFXMemory

メモリに対してのデータ読み書き機能を提供します。

SFXSource

SFBSource クラスを SFXStorage クラスに対応させるラップクラスです。SFBSource からのデータ読み込み機能を提供します。

SFXFile

ファイルに対してのデータ読み書き機能やファイルの生成・削除・リネームなどの機能を提供します。

SophiaFramework 4.0 サンプルコード

SFXPath path("/sample.txt");
SFXFile file;
SFXAnsiStringStreamWriter writer;
SFXDate date(0);

// ファイル作成日の取得

SFXFile::GetCreateDate(path, &date);

// 日時の書式出力

TRACE("create = %s", date.Format("YYYY/MM/DD hh:mm:ss (Wek)").GetCString());

// ファイルの削除

SFXFile::Remove(path);

// ファイルの新規作成と書き込み

file.OpenReadWrite(path);
file.GetStreamWriter(1024, &writer);

writer << "sophiaframework";
writer.Flush();

file.Close();

SophiaFramework 3.0 サンプルコード

SFXAnsiString path("/sample.txt");
SFBFileMgrSmp fileMgr;
SFUFileStream file;
AEEFileInfo info = {0};
SFXDate date(0);

// SFBFileMgr インスタンスの作成

fileMgr = SFBFileMgr::NewInstance();

// ファイル作成日の取得

fileMgr->GetInfo(path, &info);

// SFXDate 形式に変換

date.Set(info.dwCreationDate + SFXHelper::lacaltimeoffset(null));

// 日時の書式出力

TRACE("create = %s", date.Format("YYYY/MM/DD hh:mm:ss (Wek)").GetCString());

// ファイルの削除

fileMgr->Remove(path);

// ファイルの新規作成と書き込み

file.Open(path, _OFM_READWRITE);

file << "sophiaframework";

file.Flush();

file.Close();
SFXDirectory

ディレクトリの生成・削除・リネームやイテレータを用いたディレクトリ内のファイルの列挙機能などを提供します。

SophiaFramework 4.0 サンプルコード

SFXPath path("/user/admin/apps/");
SFXDirectory::Enumerator en;

// "/user/admin/" が存在する場合に限り apps ディレクトリ作成

SFXDirectory::Create(path, false);

// ディレクトリイテレータの取得

SFXDirectory::GetDirectoryEnumerator(SFXPath::HomeDirectoryPath(), &en);

// イテレータを用いたディレクトリの列挙

while (en.HasNext()) {
    path = en.GetNext();
    TRACE("dir = %s", path.Get().GetCString());
}

// ファイルイテレータの取得

SFXDirectory::GetFileEnumerator(SFXPath::HomeDirectoryPath(), &en);

// イテレータを用いたファイルの列挙

while (en.HasNext()) {
    path = en.GetNext();
    TRACE("file = %s", path.Get().GetCString());
}

// ディレクトリを再帰的に強制削除

SFXDirectory::Remove(path, true);

SophiaFramework 3.0 サンプルコード

SFXAnsiString path("/user/admin/apps/");
SFBFileMgrSmp fileMgr;
FileInfo info = {0};

// SFBFileMgr インスタンスの作成

fileMgr = SFBFileMgr::NewInstance();

// "/user/admin/" が存在する場合に限り apps ディレクトリ作成

if (fileMgr->Test("/user/admin/")) {
    fileMgr->MkDir(path);
}

// ディレクトリの列挙

fileMgr->EnumInit("/", true);

while (fileMgr->EnumNext(&info)) {
    TRACE("dir = %s", info.szName);
}

// ファイルの列挙

fileMgr->EnumInit("/", false);

while (fileMgr->EnumNext(&info)) {
    TRACE("dir = %s", info.szName);
}

// ディレクトリを再帰的に強制削除
//
// SFBFileMgr クラスではディレクトリの再起的な
// 強制削除を行うことはできません。
// そのために、数十行の再帰関数を独自に記述する必要があります。

SFXPath

ファイルパスを扱うクラスです。複雑な文字列処理をしなくても、ファイル名や拡張子の変更、親ディレクトリの取得などが行えます。

SophiaFramework 4.0 サンプルコード

SFXPath path;
SFXPath temp;

// 絶対パスの取得

path.Set("/user/admin/log.txt");
TRACE("path = %s", path.GetAbsolute().GetCString());

// 親ディレクトリの取得

temp = path.GetParentPath();
TRACE("parent = %s", temp.GetAbsolute().GetCString());

// 拡張子が ".txt" かどうか調べて ".html" に変更

if (path.GetExtension("txt")) {
    path.SetExtension("html");
    TRACE("path = %s", path.GetAbsolute().GetCString());
}

// 複雑なパスの設定

path.Set("/user/admin/log/../../guest/./log.txt");
TRACE("path = %s", path.GetAbsolute().GetCString());

// 複雑なパスを正規化

temp = path.NormalizePath();
TRACE("normalize = %s", temp.GetAbsolute().GetCString());
SFXTCPSocket

TCP ソケットに対してのデータの読み書き機能を提供します。また、サーバソケット機能にも対応しています。(利用できるかどうかは実機に依存)

SophiaFramework 4.0 サンプルコード

// クラス変数

SFXTCPSocket _socket;
SFXAnsiStringStreamWriter _writer;
SFXAnsiStringStreamReader _reader;

CHelloWorld::CHelloWorld(Void) static_throws
{
    SFXSocketAddress host("www.s-cradle.com:80");

    // ソケットをオープン

    _socket.Open();

    // www.s-cradle.com:80 に接続
    // ホスト名は自動的に解決される

    _socket.Connect(host, CALLBACK_FUNCTION(OnConnect));
    return;
}

CALLBACK_IMPLEMENT_SFXTCPSOCKET(CHelloWorld, OnConnect, error)
{
    // SFXAnsiStringStreamWriter をリングバッファ 1024 バイトで取得

    _socket.GetStreamWriter(1024, &_writer);

    // リングバッファにデータを書き込む

    _writer << "GET / HTTP/1.0\r\n"; 

    // データを送信

    _writer.Flush(CALLBACK_FUNCTION(OnFlush));
    return;
}

CALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMWRITER(CHelloWorld, OnFlush, error)
{
    // 送信が終わったので SFXAnsiStringStreamWriter を解放

    _writer.Release();

    // SFXAnsiStringStreamReader をリングバッファ 1024 バイトで取得

    _socket.GetStreamReader(1024, &_reader);

    // データを受信

    _reader.Fetch(CALLBACK_FUNCTION(OnFetch));
    return;
}

CALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMREADER(CHelloWorld, OnFetch, error)
{
    SFXAnsiString str;

    // リングバッファからデータを読み込む

    _reader >> str;

    // 応答を表示

    TRACE("%s", str.GetCString());

    // 受信が終わったので SFXAnsiStringStreamReader を解放

    _reader.Release();

    // ソケットをクローズ

    _socket.Close();
    return;
}

SophiaFramework 3.0 サンプルコード

// クラス変数

SFUNetworkStream _net;
SFXAnsiString _str;

CHelloWorld::CHelloWorld(Void) static_throws
{
    SFUIPEndpoint host("216.239.39.99:80");

    // 216.239.39.99:80 に接続
    //
    // SFUNetworkStream クラスはホスト名の解決を行わないので
    // ホスト名で指定するときは、SFBNetMgr クラスを使用して
    // 独自にホスト名を解決しておかなければならない。

    _socket.Open(endpoint, AEE_SOCK_STREAM, OnNotifyEntry, this);
    return;
}

Void CHelloWorld::OnNotifyEntry(SFUNetworkStream::NotifyEnum notify, VoidPtr data, SFCError error)
{
    static_cast<CHelloWorldPtr>(data)->OnNotify(notify, error);
}

Void CHelloWorld::OnNotify(SFUNetworkStream::NotifyEnum notify, SFCError error)
{
    SFXAnsiString temp;
    SInt32 length;

    switch (notify) {
        case SFUNetworkStream::NOTIFY_CONNECT:

            // データを書き込む

            _net << "GET / HTTP/1.0\r\n";

            // データを送信

            _net.Flush();
            break;
        case SFUNetworkStream::NOTIFY_WRITE:

            // データを受信

            _net.Fetch();
            break;
        case SFUNetworkStream::NOTIFY_READ:

            // 受信データが存在すればクラス変数に代入

            if ((length = _net->Available()) > 0) {
                temp.SetLength(length);
                _net->Get(temp.GetBuffer(), length);
                _str << temp;
            }

            // さらに受信可能なデータが存在するか確認

            if (_net->IsFetchable()) {

                // データを受信

                _net->Fetch();
            }

            // 通信が終了したか確認

            else if (_net->IsEOS()) {

                // 応答を表示

                TRACE("%s", _str.GetCString());

                // クローズ

                _net.Close();
            }
            break;
    }
}
SFXUDPSocket

UDP ソケットに対してのデータを読み書きする機能を提供します。

SFXInetAddress

ホスト名や IP アドレスを扱うクラスです。このクラスを利用するとホスト名から IP アドレスを取得することが可能です。一つのホストに対して複数個の IP アドレスにも対応しています。

SophiaFramework 4.0 サンプルコード → SFXSocketAddress を参照

SFXSocketAddress

ホスト名や IP アドレスに加えてポート番号を扱うクラスです。このクラスを利用するとホスト名から IP アドレスを取得することが可能です。一つのホストに対して複数個の IP アドレスにも対応しています。

SophiaFramework 4.0 サンプルコード

// SFXTCPSocket を使う場合、ホスト解決は自動で行われるので、
// 以下のコードを書く必要はありません。

// クラス変数

SFXSocketAddress _socket;

CHelloWorld::CHelloWorld(Void) static_throws
{
    // ホストを設定

    _socket.Set("www.s-cradle.com:8080");

    // 解決済みの IP アドレスの個数を取得

    TRACE("ip count = %d", _socket.GetCount());

    // ホストを表示

    TRACE(" host = %s", _socket.Get().GetCString());

    // ホスト名から IP アドレスを解決

    _socket.Resolve(CALLBACK_FUNCTION(OnResolve));
    return;
}

CALLBACK_IMPLEMENT_SFXSOCKETADDRESS(CHelloWorld, OnResolve, error)
{
    // 解決済みの IP アドレスの個数を取得

    TRACE("ip count = %d", _socket.GetCount());

    // ホストを表示

    TRACE("host = %s:%d", _socket.GetIP(0).GetCString(), _socket.GetPort());
    return;
}
SFXInputStream

読み込みストリームを表すインタフェースクラスです。

SFXOutputStream

書き込みストリームを表すインタフェースクラスです。

SFXStreamWriter

ストレージクラスに対してデータを書き込む機能を提供します。 このクラスを利用するとデータの書き込みを任意のサイズのリングバッファを用いてバッファリングできます。  また、任意のサイズでのデータの出力や、特定のバイナリ列を検出してデータを出力できます。

SophiaFramework 4.0 サンプルコード → SFXTCPSocket を参照

SFXStreamReader

ストレージクラスに対してデータを読み込む機能を提供します。  このクラスを利用するとデータの読み込みを任意のサイズのリングバッファを用いてバッファリングできます。  また、任意のサイズでのデータの取得や、特定のバイナリ列を検出してデータを取得できます。

SophiaFramework 4.0 サンプルコード → SFXTCPSocket を参照

SFXBinaryStream

バイナリストリームを表す抽象クラスです。

SFXBinaryStreamWriter

ストレージクラスに対してバイナリデータを書き込む機能を提供します。  このクラスを利用するとデータをエンディアン変換しながら書き込めます。

SophiaFramework 4.0 サンプルコード

SFXFile file;
SFXBinaryStreamWriter writer;
UInt16 index(10);

// ファイルをオープン

file.OpenReadWrite(SFXPath("/sample.txt"));

// SFXBinaryStreamWriter をリングバッファ 1024 バイトで取得

file.GetStreamWriter(1024, &writer);

// リングバッファにデータを書き込む

writer << index << "abc";

// ファイルへデータを書き出し

writer.Flush();
SFXBinaryStreamReader

ストレージクラスに対してバイナリデータを読み込む機能を提供します。  このクラスを利用するとデータをエンディアン変換しながら読み込めます。

SophiaFramework 4.0 サンプルコード

SFXFile file;
SFXBinaryStreamReader reader;
UInt16 index;
SFXAnsiString str;

// ファイルをオープン

file.OpenReadOnly(SFXPath("/sample.txt"));

// SFXBinaryStreamReader をリングバッファ 1024 バイトで取得

file.GetStreamReader(1024, &reader);

// ファイルからデータを読み込み

reader.Fetch();

// リングバッファからデータを読み込む

reader >> index >> str;

// データを表示

TRACE("index = %d", index);
TRACE("str = %s", str.GetCString());
SFXStringStream

文字列ストリームを表す抽象クラスです。

SFXAnsiStringStreamWriter

ストレージクラスに対して文字列データを書き込む機能を提供します。  このクラスを利用するとデータを文字列化しながら書き込めます。

SophiaFramework 4.0 サンプルコード → SFXTCPSocket を参照

SFXAnsiStringStreamReader

ストレージクラスに対して文字列データを読み込む機能を提供します。  このクラスを利用すると文字列からデータを読み込めます。

SophiaFramework 4.0 サンプルコード → SFXTCPSocket を参照

SFXWideStringStreamWriter

ストレージクラスに対して文字列データを書き込む機能を提供します。  このクラスを利用するとデータを文字列化しながら書き込めます。

 
SFXWideStringStreamReader

ストレージクラスに対して文字列データを読み込む機能を提供します。  このクラスを利用すると文字列からデータを読み込めます。

SFXCallback

AEECallback 構造体を利用するコールバック処理が扱えます。  AEECallback 構造体を用いる場合の初期化処理や煩雑な処理が不要です。

SFXTask

ISHELL_Resume() 関数を用いた擬似スレッド処理が扱えます。

SophiaFramework 4.0 サンプルコード

// クラス変数

SFXTask _task;

CHelloWorld::CHelloWorld(Void) static_throws
{
    // コールバック関数を登録

    _task.Set(CALLBACK_FUNCTION(OnSchedule));

    // システムに登録

    _task.Schedule();
    return;
}

CALLBACK_IMPLEMENT_SFXTASK(CHelloWorld, OnSchedule)
{
    TRACE("...OnSchedule...");

    // システムに登録
    // この関数は何度でも呼び出される

    _task.Schedule();
    return;
}
SFXTimer

ISHELL_Timer() 関数を用いたタイマー処理が簡単に扱えます。

SophiaFramework 4.0 サンプルコード

// クラス変数

SFXTimer _timer;

CHelloWorld::CHelloWorld(Void) static_throws
{
    // コールバック関数を登録

    _timer.Set(CALLBACK_FUNCTION(OnSchedule));

    // 3000ms のタイマーを登録

    _timer.Schedule(3000);
    return;
}

CALLBACK_IMPLEMENT_SFXTIMER(CHelloWorld, OnSchedule)
{
    TRACE("...OnSchedule...");

    // 3000ms のタイマーを登録
    // この関数は何度でも呼び出される

    _timer.Schedule(3000);
    return;
}
SFXHTTPConnection

BREW インターフェースの IWEB を利用して HTTP 通信を行うクラスです。  IWEB 操作時に保持しなければならない各種リソースや文字列データの管理を自動的に行います。  ユーザエージェントやプロキシサーバの設定にも対応しました。

SophiaFramework 4.0 サンプルコード

// クラス変数

SFXHTTPConnection _http;
SFXAnsiStringStreamReader _reader;

CHelloWorld::CHelloWorld(Void) static_throws
{
    // オープン

    _http.Open();

    // User-Agent フィールドを設定

    _http.SetUserAgent("SophiaFramework 4.0");

    // サイトに接続

    _http.Connect("http://www.s-cradle.com/index.html", CALLBACK_FUNCTION(OnConnect));
    return;
}

CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(CHelloWorld, OnConnect, error)
{
    SFXPropertyConstPtr header;
    SInt16 i;

    // リザルトコードを取得

    TRACE("result = %d", _http.GetResultCode());

    // Content-Length フィールドを取得

    TRACE("length = %d", _http.GetLength());

    // Date フィールドを取得

    TRACE("date = %s", _http.GetDate().Format("YYYY/MM/DD hh:mm:ss (Wek)").GetCString());

    // 受信された全てのヘッダをダンプして表示

    TRACE("---header dump---");

    header = &_http.GetResponseHeader();
    for (i = 0; i < header->GetSize(); ++i) {
        TRACE("%s: %s", header->GetKey(i).GetCString(), header->GetValue(i).GetCString());
    }

    TRACE("---header dump---");

    // SFXAnsiStringStreamReader をリングバッファ 1024 バイトで取得

    _http.GetStreamReader(1024, &_reader);

    // ボディ部分のデータを受信

    _reader.Fetch(CALLBACK_FUNCTION(OnFetch));
    return;
}

CALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMREADER(CHelloWorld, OnFetch, error)
{
    SFXAnsiString str;

    // リングバッファから受信データを読み込む

    _reader >> str;

    TRACE("%s", str.GetCString());

    // 受信が完了したので解放
    // 注:リングバッファのサイズ以上のボディデータが存在する場合は、
    //   更に Fetch() 関数で受信できる。

    _reader.Release();

    // クローズ

    _http.Close();
    return;
}
メールクラス全般

エラー処理が強化され、適切なエラー値を返すようになりました。

SFXSMTP、SFXPOP3

SFXTCPSocket の設計に沿った API に変更され、使いやすくなりました。 内部処理の効率も改善されています。

SFXSMTPSender、SFXPOP3Receiver

API の体系を見直し、簡潔にコードを記述できるようにしました。 SFXMailMessage クラスを認識するようになり、いくつかの設定が自動化されました。 前バージョンに比べコード量が半分になります。

SophiaFramework 4.0 サンプルコード

// クラス変数

SFXSMTPSender _sender;

SFXMailMessage message;

// From アドレスを設定

message.SetFrom("fromaddress@example.com");

// To アドレスを設定

message.AddTo("toaddress1@example.com");
message.AddTo("toaddress2@example.com");

// タイトルを設定

message.SetSubject("Mail Subject");

// 本文を設定

message.SetBody("Mail test\r\nThis mail is sent by SFUSmtp_sender.\r\n");

// 送信用メールサーバとポート番号を指定 (ドメインは自動解決)

_sender.SetServer(SFXSocketAddress("smtpserver.example.com:25"));

// メールを送信

_sender.SendMessage(&message, CALLBACK_FUNCTION(CallbackFunction));

SophiaFramework 3.0 サンプルコード

// クラス変数

SFUSmtpSender _sender;

SFUMailMessage message;
SFXAnsiString fromAddress("fromaddress@example.com");
SFXAnsiString toAddress1("toaddress1@example.com");
SFXAnsiString toAddress2("toaddress2@example.com");

// SFUMailMessage のインスタンスを構築
//
// From アドレスを設定

message.SetFrom(fromAddress);

// To アドレスを設定

message.AddTo(toAddress1);
message.AddTo(toAddress2);

// タイトルを設定

message.SetSubject("Mail Subject");

// 本文を設定

message.SetBody("Mail test\r\nThis mail is sent by SFUSmtpSender.\r\n");

// SFUSmtpSender の設定を行う
//
// SFUSmtpSender をオープン

_sender.Open(CallbackFunction, this);

// 送信用メールサーバとポート番号を指定 (ドメイン指定不可)

_sender.SetServer(SFUIPEndpoint("127.0.0.1:25"));

// 自分自身のアドレスを取得して設定

SFBNetMgrSmp netmgr = SFBNetMgr::NewInstance();
SFUIPEndpoint endpoint(netmgr->GetMyIPAddr());
_sender.SetHostName(endpoint.ToString());

// From アドレスを設定

_sender.SetFrom("<" + fromAddress + ">");

// To アドレスを設定

_sender.AddTo("<" + toAddress1 + ">");
_sender.AddTo("<" + toAddress2 + ">");

// メールメッセージ (ヘッダと本文) を設定

_sender.SetMessage(message.Write());

// メールを送信

_sender.Send();
SFXMailUtility

ShiftJIS と JIS の変換関数、Base64、QuotedPrintable、MD5 のエンコード、デコード関数が SFXAnsiString、SFXBuffer を直接扱うようになりました。

to フィールドに並んだ複数のメールアドレスを解析して取得する関数 ParseMailboxList が 追加されました。

SFXDTDGrammer

スキーマ言語の一つである DTD を表すクラスです。

SFXSchemaGrammer

スキーマ言語の一つである XML スキーマを表すクラスです。

SFXSOAPParser

SOAP メッセージ本体の解析クラスです。このクラスを利用すると、メッセージのエンベロープ、ヘッダ、 ボディ、フォルトなどの SOAP メッセージの基本要素を取得できます。

SFXSOAPRPC

RPC で SOAP メッセージを送受信するクラスです。SOAP メッセージ交換の詳細なプロトコルを記述する必要はなく、 数行のコーディングで SOAP 通信ができます。

SFXSOAPServiceProxy

SFXSOAPServiceProxyは、WSDL(Web Services Description Language) を解釈して実行します。 Web サービスの名前、ポート名、呼び出す機能とパラメータを入力するだけで、Web サービスが呼び出せます。 WSDL の詳細を記述する必要はなく、数行のコーディングで Web サービスにアクセスできます。

SophiaFramework 4.0 サンプルコード

// クラス変数

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

SOAP メッセージ本体の作成クラスです。このクラスを利用すると、メッセージのエンベロープ、ヘッダ、 ボディ、フォルトなどの SOAP メッセージの基本要素を構築できます。

SFXXMLDOMParser

DOM 方式で XML 文章を解析するためのクラスです。

このクラスは、XML 文書を「DOM ツリー」と呼ばれるツリー構造として扱います。 DOM ツリーは SFXXMLNode クラスのインスタンスとして表現され、 クラスのメンバ関数で子ノードに対する処理を行います。

SFXXSDDOMParser

DOM 方式でスキーマ付き XML 文章を解析するためのクラスです。

SFXXMLSAXParser

SAX 方式で XML 文章を解析するためのクラスです。

SFXXMLDefaultHandler

SAX パーサのためのイベントを通知するハンドラを実装するためのクラスです。

このクラスを継承したクラスを実装し、SAX パーサに登録することで、XML 文章解析時に イベントが通知されるようになります。

SFXXMLGrammer

DTD や XML スキーマなどのスキーマ言語を表す抽象クラスです。

SFXXMLAttribute

Attr (属性) ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLCDATASection

CDATASection ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLComment

Comment ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLDocument

Document ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLDocumentFragment

DocumentFragment ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLDocumentType

DocumentType ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLElement

Element ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLEntity

Entity ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLEntityReference

Entity Reference ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLNode

DOM の各種ノードを表す抽象クラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLNotation

Notation ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLProcessingInstruction

Processing Instruction ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。

SFXXMLText

Text ノードを表すクラスです。ノードの名前や値、各種要素を取得・設定します。