![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1 |

SFXHTTPConnection クラスは NTT ドコモの携帯 Java アプリ開発環境 DoJa に実装されている、com.nttdocomo.io.HttpConnection クラスに似た HTTP / HTTPS 通信機能を提供します。
![]() |
注意 |
|---|---|
| SFXHTTPConnection クラスは BREW API の IWeb / IWebResp / IX509Chain インターフェースを利用して実装されています。 | |
HTTP / HTTPS 通信の手順
例 477. HTTP / HTTPS 通信の手順
// SFXHTTPConnection クラスのインスタンス _http はクラスのメンバ変数として定義する class MyClass { private: SFXHTTPConnection _http; SFXAnsiStringStreamReader _reader; SFXAnsiString _receivedString; public: Void Start(Void); CALLBACK_DECLARE_SFXHTTPCONNECTION(OnConnect) CALLBACK_DECLARE_SFXANSISTRINGSTREAMREADER(OnFetch) }; Void MyClass::Start(Void) { SFCError error(SFERR_NO_ERROR); // HTTP 接続の初期化を行う if ((error = _http.Open()) == SFERR_NO_ERROR) { // HTTP リクエスト メソッドを "GET" に設定する // 設定省略時は "GET" となる _http.SetMethod("GET"); // 接続を開始する #if 1 // HTTP 接続の場合 // Web サーバーに接続する。接続の完了は、OnConnect 関数に通知される if ((error = _http.Connect("http://www.example.com/", CALLBACK_FUNCTION(OnConnect))) == SFERR_NO_ERROR) { #else // HTTPS 接続の場合 // 必要に応じて検証モードを設定する _http.SetTrustMode(SSL_TRUST_MODE_FAIL); // Web サーバーに接続する。接続の完了は、OnConnect 関数に通知される if ((error = _http.Connect("https://www.example.com/", CALLBACK_FUNCTION(OnConnect))) == SFERR_NO_ERROR) { #endif ... } } if (error != SFERR_NO_ERROR) { // エラーが発生したとき _http.Close(); } return; } // 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { SFXPropertyConstPtr header; SInt16 i; if (error == SFERR_NO_ERROR) { // 各種パラメータを表示する // HTTP ステータス コードを取得する TRACE("result code = %d", _http.GetResultCode()); // HTTP レスポンス ヘッダーの Content-Length フィールドを取得する TRACE("content length = %d", _http.GetLength()); // HTTP レスポンス ヘッダーの Content-Type フィールドを取得する TRACE("content type = %s", _http.GetType().GetCString()); // HTTP レスポンス ヘッダーの Content-Encoding フィールドを取得する TRACE("content encoding = %s", _http.GetEncoding().GetCString()); // HTTP レスポンス ヘッダーの Date フィールドを取得する TRACE("date = %s", _http.GetDate().Format("YYYY/MM/DD hh:mm:ss").GetCString()); // HTTP レスポンス ヘッダーの Expires フィールドを取得する TRACE("expires = %s", _http.GetExpires().Format("YYYY/MM/DD hh:mm:ss").GetCString()); // HTTP レスポンス ヘッダーの Last-Modified フィールドを取得する TRACE("last modified = %s", _http.GetLastModified().Format("YYYY/MM/DD hh:mm:ss").GetCString()); // HTTP レスポンス ヘッダーを取得する header = &_http.GetResponseHeader(); // HTTP レスポンス ヘッダーをすべて表示する for (i = 0; i < header->GetSize(); ++i) { TRACE("%s: %s", header->GetKey(i).GetCString(), header->GetValue(i).GetCString()); } if (_http.GetResultCode() == 200) { // データ受信用ストリームを取得する if ((error = _http.GetStreamReader(1024, &_reader)) == SFERR_NO_ERROR) { // データを受信する。データ受信の完了は、OnFetch 関数に通知される if ((error = _reader.Fetch(CALLBACK_FUNCTION(OnFetch))) == SFERR_NO_ERROR) { ... } } } else { error = SFERR_INVALID_STATE; } } if (error != SFERR_NO_ERROR) { // エラーが発生したとき _http.Close(); } return; } // データ受信の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMREADER(MyClass, OnFetch, error) { SFXAnsiString string; if (error == SFERR_NO_ERROR) { // データ受信用ストリームからデータを取得する if ((error = _reader.ReadSFXAnsiString(&string)) == SFERR_NO_ERROR) { // 断片化されたデータを結合する if ((error = _receivedString.Add(string)) == SFERR_NO_ERROR) { // 残りのデータをチェックする if (_reader.Ends()) { // すべてのデータが受信できたので表示する TRACE("--------"); TRACE("%s", _receivedString.GetCString()); TRACE("--------"); // 明示的にリソースを解放する _reader.Release(); _http.Close(); } else { // データを受信する。データ受信の完了は、OnFetch 関数に通知される error = _reader.Fetch(CALLBACK_FUNCTION(OnFetch)); } } } } if (error != SFERR_NO_ERROR) { // エラーが発生したとき _reader.Release(); _http.Close(); } return; }
BREW 2.0 では IWeb インターフェースの制限により、1536 バイト以上のデータを送信できません。
BREW 2.1 では IWeb インターフェースの制限により、64K バイト以上のデータを送信できません。
| コンストラクタ/デストラクタ |
|---|
|
SFXHTTPConnection( Void ) SFXHTTPConnection クラスのコンストラクタです。
|
|
~SFXHTTPConnection( Void ) SFXHTTPConnection クラスのデストラクタです。
|
| 型 |
|---|
|
CallbackSPP コールバック関数のプロトタイプです。
|
[ public, explicit ] SFXHTTPConnection(Void);
メンバ変数の初期化を行います。
[ public ] ~SFXHTTPConnection(Void);
オープン状態のときは、 内部で SFXHTTPConnection::Close 関数が呼び出され、リソースは解放されます。
[ public ] Void Cancel(Void);
[ public ] SFCError Clear(Void);
[ public ] Void Close(Void);
Web サーバーとの接続を終了します。内部で使っているリソースをすべて解放します。
[ public ] SFCError Connect( SFXAnsiStringConstRef url // 接続する URL CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
前回の接続で取得した HTTP レスポンス ヘッダーや SFXHTTPConnection::GetStreamReader 関数、SFXHTTPConnection::GetStreamWriter 関数で取得したストリームは破棄します。
![]() |
接続時のエラー取得 |
|---|---|
接続に関するエラーは戻り値では取得できず、コールバックを通じて通知されます。 | |
// HTTP / HTTPS 通信に必要な SFXHTTPConnection クラスのインスタンス _http はクラスのメンバ変数として定義する class MyClass { private: SFXHTTPConnection _http; public: Void Start(Void); // HTTP 接続を開始する CALLBACK_DECLARE_SFXHTTPCONNECTION(OnConnect) // コールバック関数の宣言 }; // HTTP 接続を開始する Void MyClass::Start(Void) { SFCError error(SFERR_NO_ERROR); if ((error = _http.Open()) == SFERR_NO_ERROR) { // HTTP 接続の初期化を行う _http.SetMethod("GET"); // HTTP リクエスト メソッドを "GET" に設定する // 接続を開始する if ((error = _http.Connect("http://www.example.com/", CALLBACK_FUNCTION(OnConnect))) == SFERR_NO_ERROR) { ... }else{ _http.Close(); // エラーが起きたので、接続を閉じる } } if (error != SFERR_NO_ERROR) { // エラーが発生したとき ... } return; } // 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { ... } }
[ public, const ] SFXDate GetDate(Void);
HTTP レスポンス ヘッダーの Date フィールドの値を解析し、SFXDate クラスのインスタンスを返します。
HTTP レスポンス ヘッダーに Date フィールドが存在しない場合は 0 ( SFXDate クラスを 0 で初期化して生成したインスタンス ) を返します。
SFXHTTPConnection::GetDate 関数は、日時を 1980 年 1 月 6 日 00:00:00 ( GMT ) からの秒数で返します。 この形式の日時表現は、BREW ヘルパー関数の GETJULIANDATE 関数や GETTIMESECONDS 関数で処理します。
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { // HTTP レスポンス ヘッダーの Date フィールドを取得する TRACE("date = %s", _http.GetDate().Format("YYYY/MM/DD hh:mm:ss").GetCString()); ... } }
[ public, const ] SFXAnsiStringConstRef GetEncoding(Void);
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { // HTTP レスポンス ヘッダーの Content-Encoding フィールドを取得する TRACE("content encoding = %s", _http.GetEncoding().GetCString()); ... } }
[ public, const ] SFXDate GetExpires(Void);
HTTP レスポンス ヘッダーの Expires フィールドの値を解析し、SFXDate クラスのインスタンスを返します。
HTTP レスポンス ヘッダーに Expires フィールドが存在しない場合は 0 ( SFXDate クラスを 0 で初期化して生成したインスタンス ) を返します。
SFXHTTPConnection::GetExpires 関数は、日時を 1980 年 1 月 6 日 00:00:00 ( GMT ) からの秒数で返します。 この形式の日時表現は、BREW ヘルパー関数の GETJULIANDATE 関数や GETTIMESECONDS 関数で処理します。
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { // HTTP レスポンス ヘッダーに Expires フィールドを取得する TRACE("expires = %s", _http.GetExpires().Format("YYYY/MM/DD hh:mm:ss").GetCString()); ... } }
[ public, const ] SFXDate GetLastModified(Void);
HTTP レスポンス ヘッダーの Last-Modified フィールドの値を解析し、SFXDate クラスのインスタンスを返します。
HTTP レスポンス ヘッダーに Last-Modified フィールドが存在しない場合は 0 ( SFXDate クラスを 0 で初期化して生成したインスタンス ) を返します。
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { // HTTP レスポンス ヘッダーの Last-Modified フィールドを取得する TRACE("last modified = %s", _http.GetLastModified().Format("YYYY/MM/DD hh:mm:ss").GetCString()); ... } }
[ public, const ] SInt32 GetLength(Void);
HTTP レスポンス ヘッダーの Content-Length フィールドの値を返します。取得に失敗すると -1 を返します。
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { // HTTP レスポンス ヘッダーの Content-Length フィールドを取得する TRACE("content length = %d", _http.GetLength()); ... } }
[ public, const ] SFXAnsiStringConstRef GetMethod(Void);
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { // HTTP リクエスト メソッドを取得する TRACE("method = %s", _http.GetMethod().GetCString()); ... } }
[ public, const ] SFXSocketAddressConstRef GetProxyServer(Void);
プロキシ サーバーを SFXSocketAddress 形式で取得します。
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { // プロキシ サーバーを取得する TRACE("method = %s", _http.GetProxyServer().Get().GetCString()); ... } }
[ public, const ] SFBSourceSmpConstRef GetRequestContent(Void);
![]() |
注意 |
|---|---|
SFXHTTPConnection::GetRequestContent 関数を利用する場合は、SFXHTTPConnection::GetStreamWriter 関数、 SFXHTTPConnection::GetStreamReader 関数は使えません。 | |
[ public, const ] UInt32 GetRequestFlag(Void);
HTTP リクエストの詳細条件を以下のフラグの論理和として取得できます。
SFXHTTPConnection::GetRequestFlag 関数は、通信時に内部で利用される IWEB_GetResponse 関数に渡される、通信の詳細設定を返します。
[ public, const ] SFXAnsiStringConstRef GetRequestHeader( SFXAnsiStringConstRef key // フィールド名 );
[ public, const ] SFXPropertyConstRef GetRequestHeader(Void);
接続が確立されていない場合は空文字列、空のプロパティを返します。
[ public, const ] SFBSourceSmpConstRef GetResponseContent(Void);
![]() |
注意 |
|---|---|
SFXHTTPConnection::GetResponseContent 関数を利用する場合は、SFXHTTPConnection::GetStreamWriter 関数、SFXHTTPConnection::GetStreamReader 関数は使用えません。 | |
[ public, const ] UInt32 GetResponseFlag(Void);
HTTP レスポンスの受信処理の詳細が以下のフラグの論理和として取得できます。
SFXHTTPConnection::GetResponseFlag 関数は、内部で使っている IWebResp インターフェースに対して、 WEBOPT_FLAGS を指定して IWEBRESP_GetOpt 関数を呼び出して取得した値を返します。
[ public, const ] SFXAnsiStringConstRef GetResponseHeader( SFXAnsiStringConstRef key // フィールド名 );
[ public, const ] SFXPropertyConstRef GetResponseHeader(Void);
接続が確立されていない場合は空文字列、空のプロパティを返します。
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { SFXPropertyConstPtr header; SInt16 i; if (error == SFERR_NO_ERROR) { // HTTP レスポンス ヘッダーを取得する header = &_http.GetResponseHeader(); // HTTP レスポンス ヘッダーをすべて表示する for (i = 0; i < header->GetSize(); ++i) { TRACE("%s: %s", header->GetKey(i).GetCString(), header->GetValue(i).GetCString()); } } }
[ public, const ] SInt32 GetResultCode(Void);
HTTP ステータス コードを返します。接続が確立されていない場合は -1 を返します。
GetResultCode の値は、BREW API WebRespInfo のフィールド nCode と同じく、通信エラーのときはエラー内容を負にした値を返します。
戻り値を WEB_ERROR_MAP() に渡すことによって、BREW のエラーコードを取得できます。
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { ... if (_http.GetResultCode() == 200) { // HTTP ステータス コードが 200 ( 成功 ) の場合 ... } } }
[ public, const ] SFBWebSmpConstRef GetSFBWeb(Void);
[ public, const ] SFBWebRespSmpConstRef GetSFBWebResp(Void);
[ public ] SFCError GetStreamReader( UInt32 size // バッファ サイズ SFXStreamReaderPtr result // データ受信用ストリームへのポインター );
[ public ] SFCError GetStreamReader( SFXStreamReaderPtr result // データ受信用ストリームへのポインター );
データ受信用ストリームのバッファ サイズを指定することも可能です。 データ受信用ストリームは、受信するデータのタイプに応じて SFXBinaryStreamReader、SFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスを使い分けます。
![]() |
注意 |
|---|---|
SFXHTTPConnection::GetStreamReader 関数を利用する場合は、SFXHTTPConnection::GetRequestContent / SFXHTTPConnection::GetResponseContent / SFXHTTPConnection::SetRequestContent 関数は使えません。 | |
// HTTP / HTTPS 通信に必要な SFXHTTPConnection クラスのインスタンス _http はクラスのメンバ変数として定義する class MyClass { private: SFXHTTPConnection _http; SFXAnsiStringStreamReader _reader; public: Void Start(Void); CALLBACK_DECLARE_SFXHTTPCONNECTION(OnConnect) CALLBACK_DECLARE_SFXANSISTRINGSTREAMREADER(OnFetch) }; // 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { ... // HTTP ステータス コードが 200 ( 成功 ) の場合 if (_http.GetResultCode() == 200) { // データ受信用ストリームを取得する if ((error = _http.GetStreamReader(1024, &_reader)) == SFERR_NO_ERROR) { // データ受信用ストリームからデータを受信する if ((error = _reader.Fetch(CALLBACK_FUNCTION(OnFetch))) == SFERR_NO_ERROR) { ... } } } else { error = SFERR_INVALID_STATE; } } if (error != SFERR_NO_ERROR) { // エラーが発生したとき _http.Close(); } return; } // 新しいデータを受信すると呼び出されるコールバック関数 CALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMREADER(MyClass, OnFetch, error) { if (error == SFERR_NO_ERROR) { ... } }
SFXHTTPConnection::GetStreamWriter | SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader
[ public ] SFCError GetStreamWriter( UInt32 size // バッファサイズ SFXStreamWriterPtr result // データ送信用ストリームへのポインター );
[ public ] SFCError GetStreamWriter( SFXStreamWriterPtr result // データ送信用ストリームへのポインター );
データ送信用ストリームのバッファ サイズを指定することも可能です。 データ送信用ストリームは、送信するデータのタイプに応じて SFXBinaryStreamWriter、SFXAnsiStringStreamWriter、または SFXWideStringStreamWriter クラスを使い分けます。
![]() |
注意 |
|---|---|
GetStreamWriter 関数を利用する場合は、SFXHTTPConnection::GetRequestContent 関数、SFXHTTPConnection::GetResponseContent 関数、SFXHTTPConnection::SetRequestContent 関数は使えません。 | |
// HTTP / HTTPS 通信に必要な SFXHTTPConnection クラスのインスタンス _http はクラスのメンバ変数として定義する class MyClass { private: SFXHTTPConnection _http; public: Void Start(Void); CALLBACK_DECLARE_SFXHTTPCONNECTION(OnConnect) }; Void MyClass::Start(Void) { SFXAnsiStringStreamWriter writer; SFXAnsiString send; SFCError error(SFERR_NO_ERROR); // HTTP 接続の初期化を行う if ((error = _http.Open()) == SFERR_NO_ERROR) { // 送信するデータを用意する send = "abcdefghijklmnopqrstuvwxyz"; // データ送信用ストリームを取得する if ((error = _http.GetStreamWriter(send.GetLength(), &writer)) == SFERR_NO_ERROR) { // データ送信用ストリームにデータを書き込む if ((error = writer.WriteSFXAnsiString(send)) == SFERR_NO_ERROR) { // データ送信用ストリームをフラッシュする if ((error = writer.Flush()) == SFERR_NO_ERROR) { // HTTP リクエスト メソッドを POST に設定する if ((error = _http.SetMethod("POST")) == SFERR_NO_ERROR) { if ((error = _http.Connect("http://www.example.com", CALLBACK_FUNCTION(OnConnect))) == SFERR_NO_ERROR) { // 接続を開始する ... } } } } } } if (error != SFERR_NO_ERROR) { // エラーが発生したとき _http.Close(); } return; } // 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { .... } return; }
SFXHTTPConnection::GetStreamReader | SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter
[ public, const ] UInt32 GetTrustMode(Void);
SSL 検証モードとして、以下の値を取得します。
詳細情報 : 「 BREW API リファレンス 」の ISSL_NegotiateV
[ public, const ] SFXAnsiStringConstRef GetType(Void);
// 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { // HTTP レスポンス ヘッダーの Content-Type フィールドを取得する TRACE("content type = %s", _http.GetType().GetCString()); ... } }
[ public, const ] SFXAnsiStringConstRef GetUserAgent(Void);
HTTP 接続の初期化を行います。内部で SFBWeb クラスのインスタンスを生成します。
// HTTP / HTTPS 通信に必要な SFXHTTPConnection クラスのインスタンス _http はクラスのメンバ変数として定義する class MyClass { private: SFXHTTPConnection _http; public: Void Start(Void); }; // HTTP 接続を開始する Void MyClass::Start(Void) { SFCError error(SFERR_NO_ERROR); // HTTP 接続の初期化を行う if ((error = _http.Open()) == SFERR_NO_ERROR) { ... } if (error != SFERR_NO_ERROR) { // エラーが発生したとき ... } return; }
[ public ] SFCError SetMethod( SFXAnsiStringConstRef param // メソッド文字列 );
ここで設定された値は SFXHTTPConnection::Close されるまで有効です。
SFXHTTPConnection::SetMethod 関数は、BREW の IWeb インターフェースが対応しているものしか使えません。 "GET"、"POST"、"HEAD" などが使えます。
HTTP リクエスト メソッドの設定を省略した場合は、"GET" メソッドが使われます。
// HTTP / HTTPS 通信に必要な SFXHTTPConnection クラスのインスタンス _http はクラスのメンバ変数として定義する class MyClass { private: SFXHTTPConnection _http; public: Void Start(Void); }; // HTTP 接続を開始する Void MyClass::Start(Void) { SFCError error(SFERR_NO_ERROR); // HTTP 接続の初期化を行う if ((error = _http.Open()) == SFERR_NO_ERROR) { // HTTP リクエスト メソッドを "GET" に設定する _http.SetMethod("GET"); ... } if (error != SFERR_NO_ERROR) { // エラーが発生したとき ... } return; }
[ public ] SFCError SetProxyServer( SFXSocketAddressConstRef param // プロキシ サーバー );
プロキシ サーバーを SFXSocketAddress 形式で設定します。
// HTTP / HTTPS 通信に必要な SFXHTTPConnection クラスのインスタンス _http はクラスのメンバ変数として定義する class MyClass { private: SFXHTTPConnection _http; public: Void Start(Void); }; // HTTP 接続を開始する Void MyClass::Start(Void) { SFCError error(SFERR_NO_ERROR); // HTTP 接続の初期化を行う if ((error = _http.Open()) == SFERR_NO_ERROR) { // プロキシ サーバーを設定する error = _http.SetProxyServer(SFXSocketAddress("exampleproxy.co.jp:8080"));; ... } if (error != SFERR_NO_ERROR) { // エラーが発生したとき ... } return; }
[ public ] SFCError SetRequestContent( SFXStorageConstRef param // 送信データのストレージ );
[ public ] SFCError SetRequestContent( SFBSourceSmpConstRef param // 送信データの SFBSource クラスのインスタンス );
![]() |
注意 |
|---|---|
SFXHTTPConnection::SetRequestContent 関数を利用する場合は、SFXHTTPConnection::GetStreamWriter / SFXHTTPConnection::GetStreamReader 関数は使えません。 | |
[ public ] SFCError SetRequestHeader( SFXAnsiStringConstRef key // ヘッダーの名前 SFXAnsiStringConstRef value // ヘッダーの値 );
同一の key で複数回呼ばれた場合は、すべて記憶してリクエスト時に送信されます。
設定された値は SFXHTTPConnection::Close 関数を呼び出したとき、あるいは Web サーバーに接続したときに破棄されます。
設定された値は SFXHTTPConnection::Close 関数が呼び出されるまで有効です。
実機において、この値を変更した直後の SFXHTTPConnection::Connect 関数の呼び出しでは SSL_RESULT_SERV_VERS エラーが発生することがあります。
エラーを避けるには、一度 SFXHTTPConnection::Close 関数を呼び出してから検証モードを設定し、 SFXHTTPConnection::Connect 関数を呼び出します。 SSL 検証モードとして、以下の値を設定します。
詳細情報 : 「 BREW API リファレンス 」の ISSL_NegotiateV
// HTTP / HTTPS 通信に必要な SFXHTTPConnection クラスのインスタンス _http はクラスのメンバ変数として定義する class MyClass { private: SFXHTTPConnection _http; public: Void Start(Void); CALLBACK_DECLARE_SFXHTTPCONNECTION(OnConnect) }; // HTTP 接続を開始する Void MyClass::Start(Void) { SFCError error(SFERR_NO_ERROR); // HTTP 接続の初期化を行う if ((error = _http.Open()) == SFERR_NO_ERROR) { // 検証モードを設定する _http.SetTrustMode(SSL_TRUST_MODE_FAIL); // 接続を開始する if ((error = _http.Connect("http://www.example.com/", CALLBACK_FUNCTION(OnConnect))) == SFERR_NO_ERROR) { ... }else{ // エラーが発生したとき _http.Close(); } } if (error != SFERR_NO_ERROR) { // エラーが発生したとき ... } return; } // 接続の完了が通知されるコールバック関数 CALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { ... } }
BREW API ISSL_NegotiateV | SFXHTTPConnection::GetTrustMode | SFXHTTPConnection::Connect | SFXHTTPConnection::Close
[ public ] SFCError SetUserAgent( SFXAnsiStringConstRef param // ユーザー エージェント );
typedef Void(* SFXHTTPConnection::CallbackSPP)(SFCError error, VoidPtr reference)
コールバック関数の型です。
第 1 引数にエラーコード、第 2 引数は SFXHTTPConnection::Connect 関数で指定したパラメーター( 一般に SFXHTTPConnection クラスのインスタンス )が渡されます。
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|