前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXHTTPConnection
HTTP 通信のためのクラスです。
#include <SFXHTTPConnection.h.hpp>
class SFXHTTPConnection;
SFMTYPEDEFCLASS(SFXHTTPConnection)

協調図

SFXHTTPConnection クラスの協調図

解説

SFXHTTPConnection クラスは、 NTT ドコモの携帯 Java アプリ開発環境 DoJa に実装されている、 com.nttdocomo.io.HttpConnection クラスに似た HTTP 通信機能を提供します(HTTPS 通信にも対応しています)。

[Note] 注意

SFXHTTPConnection クラスは、 BREW API の IWeb / IWebResp / IX509Chain インターフェースを利用して実装されています。

[Note] HTTP のバージョン

サポートされる HTTP のバージョンは以下の通りです。

  • BREW 3.1 以下: HTTP 1.0
  • BREW 4.0 以上: HTTP 1.1

HTTP 接続の状態遷移

HTTP 接続(SFXHTTPConnection インスタンス)は、 以下の 3 種類の状態を遷移します(正確には 4 種類の状態を遷移します)。

表 215. HTTP 接続の状態

HTTP 接続の状態 解説
STATE_CLOSE

HTTP 接続を初期化していない状態です。

SFXHTTPConnection インスタンス生成直後 (SFXHTTPConnection::SFXHTTPConnection コンストラクタ実行直後)、または SFXHTTPConnection::Close 関数を呼び出すと、 STATE_CLOSE の状態になります。

STATE_OPEN(STATE_OPEN_UNESTABLISHED/STATE_OPEN_ESTABLISHED)

Web サーバーへ接続する前の状態と、接続した後の状態を表します。 両方とも、HTTP 接続は初期化済みの状態です。

便宜上、このリファレンスでは、 それぞれ STATE_OPEN_UNESTABLISHED、STATE_OPEN_ESTABLISHED と呼びます(STATE_OPEN は、これら 2 つをまとめた状態を表します )。

STATE_CLOSE の状態で、 SFXHTTPConnection::Open 関数を呼び出すと、STATE_OPEN_UNESTABLISHED の状態になります。 また、STATE_OPEN_ESTABLISHED の状態で SFXHTTPConnection::Clear 関数を呼び出すと、STATE_OPEN_UNESTABLISHED の状態になります。

STATE_CONNECT

Web サーバーへ接続中である状態を表します。

STATE_OPEN の状態で、 SFXHTTPConnection::Connect 関数を呼び出すと、STATE_CONNECT の状態になりますが、 この関数で指定するコールバック関数(※)に接続の結果が通知されると、 STATE_OPENの状態に戻ります(接続に成功した場合は STATE_OPEN_ESTABLISHED、失敗した場合は STATE_OPEN_UNESTABLISHED)。

[Note] コールバック関数

Web サーバーに接続するには、 SFXHTTPConnection::Connect 関数を呼び出します。 接続の結果であるエラーコードは、この関数で指定したコールバック関数の第 1 引数に通知されます。

エラーコードが SFERR_NO_ERROR の場合は、HTTP レスポンスの取得に成功しています。 このとき、HTTP 接続の状態は STATE_OPEN_ESTABLISHED となります。 SFERR_FAILED の場合は、HTTP レスポンスの取得に失敗しています。 このとき、HTTP 接続の状態は STATE_OPEN_UNESTABLISHED となります。

HTTP クライアントの実装

HTTP クライアントは、 SFXHTTPConnection クラスを使用して以下の手順で実装します。

  1. HTTP 接続(SFXHTTPConnection インスタンス)を作成します。
  2. SFXHTTPConnection::Open 関数を呼び出して、HTTP 接続を開きます。
  3. SFXHTTPConnection::SetMethod 関数を呼び出して、 HTTP リクエストメソッド(デフォルト値: GET メソッド)を設定します。 SFXHTTPConnection::GetStreamWriter 関数で出力ストリームを取得しリクエストボディにデータを書き込みます。 リクエストヘッダーは、SFXHTTPConnection::SetRequestHeader 関数を使用して設定します。 なお、リクエストボディは、SFXHTTPConnection::SetRequestContent 関数を使用して設定することも可能です。
  4. HTTPS 通信の場合、 SFXHTTPConnection::SetTrustMode 関数を呼び出して、 SSL 認証モード(デフォルト値: SSL_TRUST_MODE_FAIL)を設定します。
  5. SFXHTTPConnection::Connect 関数を呼び出して、Web サーバーに接続します。
  6. Web サーバーへの接続の結果は、 SFXHTTPConnection::Connect 関数で登録したコールバック関数に通知されます。 Web サーバーへの接続の結果(エラーコード)は、コールバック関数の第 1 引数に渡されます。 エラーコードが SFERR_NO_ERROR であれば、HTTP レスポンスの取得に成功しています。
  7. SFXHTTPConnection::GetResultCode 関数で HTTP ステータスコードを取得し、その内容を確認してから、 SFXHTTPConnection::GetStreamReader 関数で入力ストリームを取得してレスポンスボディを読み込みます。 レスポンスヘッダーは、SFXHTTPConnection::GetResponseHeader 関数を使用して取得します。 なお、レスポンスボディは、SFXHTTPConnection::GetResponseContent 関数を使用して取得することも可能です。
  8. SFXHTTPConnection::Close 関数を呼び出して、 HTTP 接続を閉じます。

例 829. HTTP クライアントの実装

// コールバック関数で使用するので _http はクラスのメンバ変数として定義する
class MyClass {
private:
    SFXHTTPConnection _http;
    SFXAnsiStringStreamReader _reader;
    SFXAnsiString _receivedString;
public:
    Void Start(Void);
    XALLBACK_DECLARE_SFXHTTPCONNECTION(OnConnect)
    XALLBACK_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/",
                         XALLBACK_INTERNAL(OnConnect))) == SFERR_NO_ERROR) {
#else
        // HTTPS 通信の場合
        // 必要に応じて SSL 認証モードを設定する
        _http.SetTrustMode(SSL_TRUST_MODE_FAIL);
        // Web サーバーへ接続する
        // ※ 接続要求の結果は、OnConnect 関数に通知される
        if ((error = _http.Connect("https://www.example.com/",
                         XALLBACK_INTERNAL(OnConnect))) == SFERR_NO_ERROR) {
#endif
            ...
        }
    }

    if (error != SFERR_NO_ERROR) {

        // エラーが発生したとき
        // 接続を閉じる
        _http.Close();
    }
    return;
}

// 接続要求の結果が通知されるコールバック関数
XALLBACK_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) {

            // ストリームを使用して HTTP レスポンスボディを読み込む

            // HTTP レスポンスボディ読み込み用ストリームを取得する
            if ((error = _http.GetStreamReader(1024, &_reader)) == SFERR_NO_ERROR) {

                // フェッチを行う: HTTP レスポンスボディからストリームバッファにデータを読み込む
                // ※ 読み込み(フェッチ)の結果は、OnFetch 関数に通知される
                if ((error = _reader.Fetch(XALLBACK_INTERNAL(OnFetch))) == SFERR_NO_ERROR) {

                    TRACE(">> fetching...");
                }
            }
        }
        else {
            error = SFERR_INVALID_STATE;
        }
    }

    if (error != SFERR_NO_ERROR) {

        // エラーが発生したとき
        // ストリームを解放する
        _reader.Release();
        // 接続を閉じる
        _http.Close();
    }
    return;
}

// 読み込み(フェッチ)の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMREADER(MyClass, OnFetch, error)
{
    SFXAnsiString string;

    if (error == SFERR_NO_ERROR) {

        // ストリームバッファから string 変数にデータを読み込む
        if ((error = _reader.ReadSFXAnsiString(&string)) == SFERR_NO_ERROR) {

            // _string 変数に string 変数を追加する 
            if ((error = _string.Add(string)) == SFERR_NO_ERROR) {

                // 残りのデータをチェックする
                if (_reader.Ends()) {

                    // すべてのデータを読み込んだとき: 

                    // HTTP レスポンスボディをデバッグウィンドウに表示する
                    TRACE("--------");
                    TRACE("%s", _string.GetCString());
                    TRACE("--------");

                    // ストリームを解放する
                    _reader.Release();
                    // 接続を閉じる
                    _http.Close();
                }
                else {

                    // 読み込むデータがまだ存在するとき: 

                    // フェッチを行う: HTTP レスポンスボディからストリームバッファにデータを読み込む
                    // ※ 読み込み(フェッチ)の結果は、OnFetch 関数に通知される
                    error = _reader.Fetch(XALLBACK_INTERNAL(OnFetch));
                }
            }
        }
    }

    if (error != SFERR_NO_ERROR) {

        // エラーが発生したとき
        // ストリームを解放する
        _reader.Release();
        // 接続を閉じる
        _http.Close();
    }
    return;
}

BREW 2.0 / 2.1 における IWeb インターフェースの制限事項

BREW 2.0 では、 1536 バイト以上のデータを送信できません。

BREW 2.1 では、 65536 バイト以上のデータを送信できません。

参照

BREW API IWeb | BREW API IWebResp | BREW API IX509Chain | SFXTCPSocket | HTTP 接続

メンバ

コンストラクタ/デストラクタ
SFXHTTPConnection( Void )
SFXHTTPConnection クラスのコンストラクタです。
~SFXHTTPConnection( Void )
SFXHTTPConnection クラスのデストラクタです。
パブリック関数
Void Cancel( Void )
Web サーバーへの接続をキャンセルします。
SFCError Clear( Void )
内部変数を初期化します。
Void Close( Void )
HTTP 接続を閉じます。
SFCError Connect( SFXAnsiStringConstRef url , CallbackSPP spp , VoidPtr reference )
Web サーバーに接続します。
SFXAnsiStringConstRef GetBaseUrl( Void )
Basic 認証の基準 URL を取得します。
SFXDate GetDate( Void )
HTTP レスポンスヘッダーの Date フィールドの値を取得します。
SFXAnsiStringConstRef GetEncoding( Void )
HTTP レスポンスヘッダーの Content-Encoding フィールドの値を取得します。
SFXDate GetExpires( Void )
HTTP レスポンスヘッダーの Expires フィールドの値を取得します。
SFXDate GetLastModified( Void )
HTTP レスポンスヘッダーの Last-Modified フィールドの値を取得します。
SInt32 GetLength( Void )
HTTP レスポンスヘッダーの Content-Length フィールドを取得します。
SFXAnsiStringConstRef GetMethod( Void )
HTTP リクエストメソッドを取得します。
SFXAnsiStringConstRef GetPassword( Void )
Basic 認証のパスワードを取得します。
SFXSocketAddressConstRef GetProxyServer( Void )
プロキシサーバーを取得します。
SFBSourceSmpConstRef GetRequestContent( Void )
HTTP リクエストボディを管理する SFBSource インスタンスを取得します。
UInt32 GetRequestFlag( Void )
HTTP リクエストフラグを取得します。
SFXAnsiStringConstRef GetRequestHeader( SFXAnsiStringConstRef key )
HTTP リクエストヘッダーを取得します。
SFXPropertyConstRef GetRequestHeader( Void )
HTTP リクエストヘッダーを取得します。
SFBSourceSmpConstRef GetResponseContent( Void )
HTTP レスポンスボディを管理する SFBSource インスタンスを取得します。
UInt32 GetResponseFlag( Void )
HTTP レスポンスフラグを取得します。
SFXAnsiStringConstRef GetResponseHeader( SFXAnsiStringConstRef key )
HTTP レスポンスヘッダーを取得します。
SFXPropertyConstRef GetResponseHeader( Void )
HTTP レスポンスヘッダーを取得します。
SInt32 GetResultCode( Void )
HTTP ステータスコードを取得します。
SFBWebSmpConstRef GetSFBWeb( Void )
内部で管理する SFBWeb インスタンスを取得します。
SFBWebRespSmpConstRef GetSFBWebResp( Void )
内部で管理する SFBWebResp インスタンスを取得します。
StateEnum GetState( Void )
HTTP/HTTPS 接続の状態を取得します。
SFCError GetStreamReader( UInt32 size , SFXStreamReaderPtr result )
HTTP レスポンスボディを読み込むためのデータ受信用ストリームを取得します。
SFCError GetStreamReader( SFXStreamReaderPtr result )
HTTP レスポンスボディを読み込むためのデータ受信用ストリームを取得します。
SFCError GetStreamWriter( UInt32 size , SFXStreamWriterPtr result )
HTTP リクエストボディにデータを書き込むためのデータ送信用ストリームを取得します。
SFCError GetStreamWriter( SFXStreamWriterPtr result )
HTTP リクエストボディにデータを書き込むためのデータ送信用ストリームを取得します。
UInt32 GetTimeoutMillisecond( Void )
接続タイムアウト時間を取得します。 [単位: ミリ秒]
UInt32 GetTrustMode( Void )
HTTPS 通信の SSL 認証モードを取得します。
SFXAnsiStringConstRef GetType( Void )
HTTP レスポンスヘッダーの Content-Type フィールドを取得します。
SFXAnsiStringConstRef GetUser( Void )
Basic 認証のユーザー名を取得します。
SFXAnsiStringConstRef GetUserAgent( Void )
ユーザーエージェントを取得します。
SFCError Open( AEECLSID id = AEECLSID_WEB )
HTTP 接続を開きます。
SFCError SetAuthorizeData( SFXAnsiStringConstRef user , SFXAnsiStringConstRef passwd , SFXAnsiStringConstRef url )
HTTP ベーシック認証の情報を設定します。
SFCError SetMethod( SFXAnsiStringConstRef param )
HTTP リクエストメソッドを設定します。
SFCError SetProxyServer( SFXSocketAddressConstRef param )
プロキシサーバーを設定します。
SFCError SetRequestContent( SFXFileConstRef file )
HTTP リクエストボディにストレージまたはソースを設定します。
SFCError SetRequestContent( SFXMemoryConstRef memory )
HTTP リクエストボディにストレージまたはソースを設定します。
SFCError SetRequestContent( SFXStorageConstRef storage , SInt32 length )
HTTP リクエストボディにストレージまたはソースを設定します。
SFCError SetRequestContent( SFBSourceSmpConstRef source , SInt32 length )
HTTP リクエストボディにストレージまたはソースを設定します。
SFCError SetRequestFlag( UInt32 param )
HTTP リクエストフラグを設定します。
SFCError SetRequestHeader( SFXAnsiStringConstRef key , SFXAnsiStringConstRef value )
HTTP リクエストヘッダーを設定します。
Void SetTimeoutCallback( SFXCallback::CallbackSPP spp , VoidPtr reference )
接続タイムアウトコールバックを設定します。
Void SetTimeoutMillisecond( UInt32 msec )
接続タイムアウト時間を設定します 。[単位: ミリ秒]
SFCError SetTrustMode( UInt32 param )
HTTPS 通信の SSL 認証モードを設定します。
SFCError SetUserAgent( SFXAnsiStringConstRef param )
ユーザーエージェントを設定します。
SFCError LoadCertificate( SInt32 kind , SFXPathConstRef path ) (LoadCertificate から継承)
ASN.1/DER 形式の証明書のファイルまたはバッファを読み込みます。
SFCError LoadCertificate( SInt32 kind , SFXBufferConstRef buffer ) (LoadCertificate から継承)
ASN.1/DER 形式の証明書のファイルまたはバッファを読み込みます。
CallbackSPP
HTTP 接続の結果が通知されるコールバック関数の型です。
StateEnum
HTTP/HTTPS 接続の状態を表す列挙体

SFXHTTPConnection::SFXHTTPConnection
SFXHTTPConnection クラスのコンストラクタです。
[ public, explicit ]
SFXHTTPConnection(Void);

解説

このコンストラクタは、以下の初期化を行います。

  1. この HTTP 接続は閉じた状態(STATE_CLOSE)に初期化します。
  2. デフォルトの接続タイムアウト時間を 0(接続タイムアウトを行わない)に設定します。
  3. SFXHTTPConnection::OnTimeoutDefault 関数をデフォルトの接続タイムアウトコールバックとして登録します。
[Note] 注意

このコンストラクタを実行した直後、 HTTP 接続の状態は STATE_CLOSE です。

Web サーバーに接続するには、 SFXHTTPConnection::Open 関数を呼び出してこの HTTP 接続を開く必要があります。

参照

SFXHTTPConnection::Open | SFXHTTPConnection::SetTimeoutMillisecond | SFXHTTPConnection::SetTimeoutCallback


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

解説

このデストラクタは、内部で SFXHTTPConnection::Close 関数を呼び出します。

具体的には、HTTP リクエストと HTTP レスポンスの内容を初期化し、 この HTTP 接続が内部で保持する SFBWeb / SFBWebResp インスタンスを解放し、 この HTTP 接続を閉じた状態にし、 SFXHTTPConnection::Connect 関数で登録したコールバックをキャンセルします。

参照

SFXHTTPConnection::Close | SFXHTTPConnection::Connect | SFBWeb | SFBWebResp


SFXHTTPConnection::Cancel
Web サーバーへの接続をキャンセルします。
[ public ]
Void Cancel(Void);

解説

この関数は、 SFXHTTPConnection::Connect 関数による Web サーバーへの接続をキャンセルします。

SFXHTTPConnection::Connect 関数で登録したコールバックや接続タイムアウトのタイマーをキャンセルし、 この HTTP 接続の内容を SFXHTTPConnection::Connect 関数を呼び出す前の状態に戻します。

この関数は、HTTP 接続が STATE_CONNECT の状態のとき (SFXHTTPConnection::Connect 関数を呼び出してからその結果がコールバックに通知されるまで)に有効です。

この関数は、SFXHTTPConnection::Close 関数の内部からも呼び出されます。

参照

SFXHTTPConnection::Close | SFXHTTPConnection::Connect | SFXHTTPConnection::SetTimeoutMillisecond | SFXHTTPConnection::SetTimeoutCallback


SFXHTTPConnection::Clear
内部変数を初期化します。
[ public ]
SFCError Clear(Void);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • HTTP 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、この HTTP 接続の内部変数を初期化します。

HTTP 接続の状態は、STATE_OPEN_UNESTABLISHED になります。

具体的には、以下の処理を行います。

  1. HTTP リクエストの内容を初期化します。
  2. HTTP リクエストメソッドを "GET" に設定します。
  3. HTTP リクエストボディを書き込む内部ストレージを開きます。
  4. HTTP レスポンスの内容を初期化します。
  5. STATE_OPEN_UNESTABLISHED 状態に遷移します。
[Note] 注意

この関数を実行した段階では、Web サーバーへの接続は確立されていません。

Web サーバーへの接続を確立するには、 この HTTP 接続の HTTP リクエストを作成し、 SFXHTTPConnection::Connect 関数を呼び出す必要があります。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。

参照

SFXHTTPConnection::Cancel | SFXHTTPConnection::Open


SFXHTTPConnection::Close
HTTP 接続を閉じます。
[ public ]
Void Close(Void);

解説

この関数は、この HTTP 接続を閉じます。

HTTP 接続の状態は、STATE_CLOSE になります。

具体的には、以下の処理を行います。

  1. HTTP リクエストを初期化します。
  2. HTTP 接続が内部で保持する SFBWeb / SFBWebResp インスタンスを解放します。
  3. SFXHTTPConnection::Connect 関数で登録したコールバックをキャンセルします。
  4. HTTP レスポンスを初期化します。
  5. STATE_CLOSE 状態に遷移します。
[Tip] Tip
サスペンド時は、この関数を呼び出してリソースを解放する必要があります。
[Note] 注意

この関数は、SFXHTTPConnection::~SFXHTTPConnection デストラクタから呼び出されます。

この関数は、内部で SFXHTTPConnection::Cancel 関数を呼び出します。

参照

SFXHTTPConnection::~SFXHTTPConnection | SFXHTTPConnection::Open | SFXHTTPConnection::Cancel | SFXHTTPConnection::GetSFBWeb | SFXHTTPConnection::GetSFBWebResp | SFXHTTPConnection::Open


SFXHTTPConnection::Connect
Web サーバーに接続します。
[ public ]
SFCError Connect(
    SFXAnsiStringConstRef url   // 接続する Web サーバーの URL
    CallbackSPP spp             // コールバック関数
    VoidPtr reference           // コールバック関数に渡すデータ(参照値)
);

引数

url

接続する Web サーバーの URL を指定します。

spp

Web サーバーへの接続が完了した後に呼び出されるコールバック関数を指定します。

reference

Web サーバーへの接続が完了した後に呼び出されるコールバック関数が参照するデータを指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • HTTP 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY
  • HTTP 接続に失敗したとき: SFERR_FAILED(※このエラーは引数に指定したコールバック関数の第 1 引数に渡されます)

解説

この関数は、引数に指定した Web サーバーに接続します。

この関数を呼び出した直後 HTTP 接続の状態は、STATE_CONNECT になりますが、 接続の結果がコールバックに通知されたときには再び STATE_OPEN に戻ります (成功した場合は STATE_OPEN_ESTABLISHED、失敗した場合は STATE_OPEN_UNESTABLISHED)。

具体的には、以下の処理を行います。

  1. HTTP レスポンスの内容を初期化します。
  2. 接続タイムアウト時間が 0 でない場合は、 接続タイムアウト処理を行います(タイマーをスタートします)。
  3. Web サーバーへの接続を試みます。
  4. Web サーバーへの接続が成功すると、 この HTTP 接続は確立したことになり、 Web サーバーから読み取った各種情報を HTTP レスポンスに設定し、 HTTP レスポンスボディが書き込まれている内部ストレージをオープンします (HTTP レスポンスボディを読み込むためのストリームが取得可能になります)。
  5. Web サーバーへの接続の結果を引数に指定したコールバック関数に通知します。 接続エラーは、コールバック関数の第 1 引数に渡されます。
  6. STATE_CONNECT 状態に遷移し、更に接続の結果がコールバック関数に通知されるときに STATE_OPEN 状態に遷移します (成功した場合は STATE_OPEN_ESTABLISHED、失敗した場合は STATE_OPEN_UNESTABLISHED)。
  7. 接続タイムアウト時間が経過しても何も応答がない場合は、 接続タイムアウトコールバックが呼び出されます【接続タイムアウト処理が行われます】。

接続が確立する前にキャンセルするには、 SFXHTTPConnection::Cancel 関数を呼び出します。

なお、この関数の戻り値がエラー(SFERR_NO_ERROR 以外の値)の場合、コールバック関数は呼び出されません。

[Caution] SFERR_FAILED エラーの取得

接続に失敗したことを表す SFERR_FAILED エラーは、 引数に指定したコールバック関数の第 1 引数に渡されます。 この関数の戻り値として取得することはでません。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。

使用例

// HTTP 通信に必要な SFXHTTPConnection インスタンス _http はクラスのメンバ変数として定義する
class MyClass {
private:
    SFXHTTPConnection _http;
public:
    Void Start(Void);                               // HTTP 接続を開始する
    XALLBACK_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" に設定する

        // Web サーバーへ接続する
        // ※ 接続要求の結果は、OnConnect 関数に通知される
        if ((error = _http.Connect("http://www.example.com/", XALLBACK_INTERNAL(OnConnect))) == SFERR_NO_ERROR) {

           ...

        }else{

            // エラーが起きたので、接続を閉じる
            _http.Close();  
        }
        
    }

    if (error != SFERR_NO_ERROR) {  

        // エラーが発生したとき
        ...
    }
    return;
}
// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        ...
    }
}

参照

SFXHTTPConnection::Open | SFXHTTPConnection::Cancel | SFXHTTPConnection::SetTimeoutMillisecond | SFXHTTPConnection::SetTimeoutCallback


SFXHTTPConnection::GetBaseUrl
Basic 認証の基準 URL を取得します。
[ public, const ]
SFXAnsiStringConstRef GetBaseUrl(Void);

戻り値

Basic 認証の基準 URL

解説

Basic 認証の基準 URL を取得します。

SFXHTTPConnection::SetAuthorizeData 関数で設定された値が取得されます。

参照

SFXHTTPConnection::SetAuthorizeData


SFXHTTPConnection::GetDate
HTTP レスポンスヘッダーの Date フィールドの値を取得します。
[ public, const ]
SFXDate GetDate(Void);

戻り値

HTTP レスポンスヘッダーの Date フィールドの値(SFXDate)

解説

この関数は、この HTTP 接続の HTTP レスポンスヘッダーの Date フィールドの値(SFXDate)を取得します。

HTTP レスポンスヘッダーに Date フィールドが存在しない場合、 またはHTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 SFXDate(0) を返します。

使用例

// 接続要求の結果が通知されるコールバック関数
XALLBACK_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());
        ...
    }
}

参照

SFXHTTPConnection::Connect | SFXDate


SFXHTTPConnection::GetEncoding
HTTP レスポンスヘッダーの Content-Encoding フィールドの値を取得します。
[ public, const ]
SFXAnsiStringConstRef GetEncoding(Void);

戻り値

HTTP レスポンスヘッダーの Content-Encoding フィールドの値

解説

この関数は、この HTTP 接続の HTTP レスポンスヘッダーの Content-Encoding フィールドの値を取得します。

HTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 空文字列(SFXAnsiString::EmptyInstance())を返します。

使用例

// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        // HTTP レスポンスヘッダーの Content-Encoding フィールドを取得する
        TRACE("content encoding = %s", _http.GetEncoding().GetCString()); 

        ...
    }
}

参照

SFXHTTPConnection::Connect | SFXAnsiString


SFXHTTPConnection::GetExpires
HTTP レスポンスヘッダーの Expires フィールドの値を取得します。
[ public, const ]
SFXDate GetExpires(Void);

戻り値

HTTP レスポンスヘッダーの Expires フィールドの値(SFXDate)

解説

この関数は、この HTTP 接続の HTTP レスポンスヘッダーの Expires フィールドの値(SFXDate)を取得します。

HTTP レスポンスヘッダーに Expires フィールドが存在しない場合、 またはHTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 SFXDate(0) を返します。

使用例

// 接続要求の結果が通知されるコールバック関数
XALLBACK_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());
        ...
    }
}

参照

SFXHTTPConnection::Connect | SFXDate


SFXHTTPConnection::GetLastModified
HTTP レスポンスヘッダーの Last-Modified フィールドの値を取得します。
[ public, const ]
SFXDate GetLastModified(Void);

戻り値

HTTP レスポンスヘッダーの Last-Modified フィールドの値(SFXDate)

解説

この関数は、この HTTP 接続の HTTP レスポンスヘッダーの Last-Modified フィールドの値(SFXDate)を取得します。

HTTP レスポンスヘッダーに Last-Modified フィールドが存在しない場合、 またはHTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 SFXDate(0) を返します。

使用例

// 接続要求の結果が通知されるコールバック関数
XALLBACK_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());
        ...
    }
}

参照

SFXHTTPConnection::Connect | SFXDate


SFXHTTPConnection::GetLength
HTTP レスポンスヘッダーの Content-Length フィールドを取得します。
[ public, const ]
SInt32 GetLength(Void);

戻り値

HTTP レスポンスヘッダーの Content-Length フィールドの値

解説

この関数は、この HTTP 接続の HTTP レスポンスヘッダーの Content-Length フィールドの値を取得します。

HTTP レスポンスヘッダーに Content-Length フィールドが存在しない場合、 またはHTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 -1 を返します。

使用例

// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        // HTTP レスポンスヘッダーの Content-Length フィールドを取得する
        TRACE("content length = %d", _http.GetLength());
        ...
    }
}

参照

SFXHTTPConnection::Connect


SFXHTTPConnection::GetMethod
HTTP リクエストメソッドを取得します。
[ public, const ]
SFXAnsiStringConstRef GetMethod(Void);

戻り値

HTTP リクエストメソッド

解説

この関数は、SFXHTTPConnection::SetMethod 関数で設定した、 この HTTP 接続の HTTP リクエストメソッドを取得します。

HTTP 接続の状態が STATE_OPEN でない場合、 空文字列(SFXAnsiString::EmptyInstance()) を返します。

使用例

// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        // HTTP リクエストメソッドを取得する
        TRACE("method = %s", _http.GetMethod().GetCString());
        ...
    }
}

参照

SFXHTTPConnection::SetMethod | SFXHTTPConnection::Open | SFXAnsiString


SFXHTTPConnection::GetProxyServer
プロキシサーバーを取得します。
[ public, const ]
SFXSocketAddressConstRef GetProxyServer(Void);

戻り値

この HTTP 接続のプロキシサーバー(SFXSocketAddress)

解説

この関数は、SFXHTTPConnection::SetProxyServer 関数で設定した、 この HTTP 接続のプロキシサーバー(SFXSocketAddress)を取得します。

HTTP 接続の状態が STATE_OPEN でない場合、 またはプロキシサーバーが設定されていない場合、 SFXSocketAddress::EmptyInstance() を返します。

使用例

// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        // プロキシサーバーを取得する
        TRACE("method = %s", _http.GetProxyServer().Get().GetCString());
        ...
    }
}

参照

SFXHTTPConnection::SetProxyServer | SFXSocketAddress


SFXHTTPConnection::GetRequestContent
HTTP リクエストボディを管理する SFBSource インスタンスを取得します。
[ public, const ]
SFBSourceSmpConstRef GetRequestContent(Void);

戻り値

HTTP リクエストボディを管理する SFBSource インスタンス

解説

この関数は、SFXHTTPConnection::SetRequestContent 関数を使用して設定した、 この HTTP 接続の HTTP リクエストボディを管理する SFBSource インスタンスを取得します。

HTTP 接続の状態が STATE_OPEN でない場合、 または何も設定されていない場合、 &SFBSourceSmp::EmptyInstance() を返します。

参照

SFXHTTPConnection::SetRequestContent | SFBSource


SFXHTTPConnection::GetRequestFlag
HTTP リクエストフラグを取得します。
[ public, const ]
UInt32 GetRequestFlag(Void);

戻り値

HTTP リクエストフラグ

解説

この関数は、SFXHTTPConnection::SetRequestFlag 関数で設定した、 HTTP リクエストフラグを取得します。

HTTP 接続の状態が STATE_OPEN でない場合、 0 を返します。

参照

SFXHTTPConnection::SetRequestFlag | SFXHTTPConnection::Open | BREW API IWEB_GetResponse


SFXHTTPConnection::GetRequestHeader
HTTP リクエストヘッダーを取得します。
[ public, const ]
SFXAnsiStringConstRef GetRequestHeader(
    SFXAnsiStringConstRef key   // フィールド名
);
[ public, const ]
SFXPropertyConstRef GetRequestHeader(Void);

戻り値

HTTP リクエストヘッダー

解説

この関数は、HTTP リクエストヘッダーを取得します。 フィールド名を指定して個別に取得することも可能です。 引数に何も指定しない場合は、全ての HTTP リクエストヘッダーを取得します。

HTTP 接続の状態が STATE_OPEN でない場合、、 空文字列(SFXAnsiString::EmptyInstance())、または 空のプロパティ(SFXProperty::EmptyInstance()) を返します。

参照

SFXHTTPConnection::SetRequestHeader | SFXProperty | SFXAnsiString


SFXHTTPConnection::GetResponseContent
HTTP レスポンスボディを管理する SFBSource インスタンスを取得します。
[ public, const ]
SFBSourceSmpConstRef GetResponseContent(Void);

戻り値

HTTP レスポンスボディを管理する SFBSource インスタンス

解説

この関数は、この HTTP 接続の HTTP レスポンスボディを管理する SFBSource インスタンスを取得します。

HTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 SFBSourceSmp::EmptyInstance() を返します。

[Tip] Tip
HTTP 接続確立後、この関数を使用して HTTP レスポンスボディを取得することが可能です。
[Note] 注意

SFXHTTPConnection::GetStreamReader 関数は、 SFXHTTPConnection::GetResponseContent 関数の戻り値である SFBSource インスタンスからストリームを取得しています。

[Caution] HTTP レスポンスボディの読み込み

SFXHTTPConnection::GetResponseContent 関数を使用して HTTP レスポンスボディを読み込む場合は、 SFXHTTPConnection::GetStreamReader 関数を使えません。

逆に、SFXHTTPConnection::GetStreamReader 関数を使用して HTTP レスポンスボディを読み込む場合は、 SFXHTTPConnection::GetResponseContent 関数を使えません。

参照

SFXHTTPConnection::GetStreamReader | SFBSource | SFXHTTPConnection::Connect


SFXHTTPConnection::GetResponseFlag
HTTP レスポンスフラグを取得します。
[ public, const ]
UInt32 GetResponseFlag(Void);

戻り値

HTTP レスポンスフラグ

解説

この関数は、この HTTP 接続の HTTP レスポンスフラグを取得します。

HTTP レスポンスフラグは、以下のフラグの論理和として表現されます。

  • WEBRESPONSE_REDIRECTED : IWeb インターフェースによりリダイレクトされました。BREW の HTTP プロトコルエンジンには実装されていません。
  • WEBRESPONSE_COOKIES : HTTP リクエストでクッキーを送信しました。BREW の HTTP プロトコルエンジンには実装されていません。
  • WEBRESPONSE_CACHED : ローカル キャッシュにからデータを取得しました。ネットワーク通信は行っていません。
  • WEBRESPONSE_KEEPALIVE : 接続はキープアライブ状態にあります。
  • WEBRESPONSE_HTTP09 : HTTP 0.9 のレスポンスを受信しました。ヘッダーがありません。ステータスコード 200 として処理しました。
  • WEBRESPONSE_LOCAL : ローカルで生成されたコンテンツです。ネットワーク通信は行っていません。
  • WEBRESPONSE_PROXIED : プロキシ経由でデータを受信しました。
  • WEBRESPONSE_AUTHBASIC : BASIC 認証のための情報を送信しました。BREW の HTTP プロトコルエンジンには実装されていません。

HTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 0 を返します。

参照

SFXHTTPConnection::SetRequestFlag | SFXHTTPConnection::Connect | SFBWebResp | BREW API IWEBRESP_GetOpt


SFXHTTPConnection::GetResponseHeader
HTTP レスポンスヘッダーを取得します。
[ public, const ]
SFXAnsiStringConstRef GetResponseHeader(
    SFXAnsiStringConstRef key   // フィールド名
);
[ public, const ]
SFXPropertyConstRef GetResponseHeader(Void);

戻り値

HTTP レスポンスヘッダー

解説

この関数は、HTTP レスポンスヘッダーを取得します。 フィールド名を指定して個別に取得することも可能です。 引数に何も指定しない場合は、全ての HTTP レスポンスヘッダーを取得します。

HTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 空文字列(SFXAnsiString::EmptyInstance())、 空のプロパティ(SFXProperty::EmptyInstance())を返します。

使用例

// 接続が完了すると呼び出されるコールバック関数
XALLBACK_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());
        }
    }
}

参照

SFXHTTPConnection::Connect | SFXProperty | SFXAnsiString


SFXHTTPConnection::GetResultCode
HTTP ステータスコードを取得します。
[ public, const ]
SInt32 GetResultCode(Void);

戻り値

HTTP ステータスコード

解説

この関数は、HTTP ステータスコードを取得します。

HTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 -1 を返します。

HTTP 接続が確立されている場合、 この関数の戻り値は、BREW API の WebRespInfo 内のフィールド nCode と同じです。

nCode は、プロトコルエラーコードまたは「負の」 WEB_ERROR エラーコードを表します。 正の値はサーバーから返された値であり、負のエラーコードはシステムエラーを表します。 戻り値を WEB_ERROR_MAP() に渡すことによって、BREW の WEB_ERROR エラーコードを取得できます。 また、WEB_ERROR_SUCCEEDED() に渡すことによって操作が成功したかどうか判定できます。

[Note] 注意
WEB_ERROR エラーコードの詳細については、 AEEError.h を参照してください。

使用例

// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        ...

        if (_http.GetResultCode() == 200) { 

            // HTTP ステータスコードが 200 ( 成功 ) の場合
            ...
        }
    }
}

参照

SFXHTTPConnection::Connect | BREW API WebRespInfo | BREW API WEB_ERROR_MAP | BREW API WEB_ERROR_SUCCEEDED


SFXHTTPConnection::GetSFBWeb
内部で管理する SFBWeb インスタンスを取得します。
[ public, const ]
SFBWebSmpConstRef GetSFBWeb(Void);

戻り値

この HTTP 接続が内部で管理する SFBWeb インスタンス

解説

この関数は、この HTTP 接続が内部で管理する SFBWeb インスタンスを取得します。

参照

SFBWeb | BREW API IWeb


SFXHTTPConnection::GetSFBWebResp
内部で管理する SFBWebResp インスタンスを取得します。
[ public, const ]
SFBWebRespSmpConstRef GetSFBWebResp(Void);

戻り値

この HTTP 接続が内部で管理する SFBWebResp インスタンス

解説

この関数は、この HTTP 接続が内部で管理する SFBWebResp インスタンスを取得します。

参照

SFBWebResp | BREW API IWebResp


SFXHTTPConnection::GetState
HTTP/HTTPS 接続の状態を取得します。
[ public, const ]
StateEnum GetState(Void);

戻り値

HTTP/HTTPS 接続の状態 (SFXHTTPConnection::StateEnum)

解説

HTTP/HTTPS 接続の状態 (SFXHTTPConnection::StateEnum) を取得します。

参照

SFXHTTPConnection::StateEnum


SFXHTTPConnection::GetStreamReader
HTTP レスポンスボディを読み込むためのデータ受信用ストリームを取得します。
[ public ]
SFCError GetStreamReader(
    UInt32 size                 // バッファサイズ
    SFXStreamReaderPtr result   // データ受信用ストリームへのポインタ
);
[ public ]
SFCError GetStreamReader(
    SFXStreamReaderPtr result   // データ受信用ストリームへのポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき: SFERR_INVALID_PARAM
  • HTTP 接続の状態が STATE_OPEN_ESTABLISHED でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、この HTTP 接続の HTTP レスポンスボディを読み込むためのデータ受信用ストリームを取得します。

size 引数を指定する場合、ストリームバッファは指定したサイズで固定です。 指定しない場合は、ストリームバッファは可変長になり、 内部的に SFXElasticStreamReader クラスが利用されます。

[Tip] Tip
データ受信用ストリームは、受信するデータの種類に応じて SFXBinaryStreamReaderSFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスを使い分けます。
[Note] 注意

SFXHTTPConnection::GetStreamReader 関数を使用して取得するストリームは、 SFXHTTPConnection::GetResponseContent 関数の戻り値である SFBSource インスタンスから取得しています。

[Caution] HTTP レスポンスボディの読み込み

SFXHTTPConnection::GetResponseContent 関数を使用して HTTP レスポンスボディを読み込む場合は、 SFXHTTPConnection::GetStreamReader 関数を使えません。

逆に、SFXHTTPConnection::GetStreamReader 関数を使用して HTTP レスポンスボディを読み込む場合は、 SFXHTTPConnection::GetResponseContent 関数を使えません。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN_ESTABLISHED のときにのみ有効です。

使用例

// HTTP 通信に必要な SFXHTTPConnection インスタンス _http はクラスのメンバ変数として定義する
class MyClass {
private:
    SFXHTTPConnection _http;
    SFXAnsiStringStreamReader _reader;
public:
    Void Start(Void);
    XALLBACK_DECLARE_SFXHTTPCONNECTION(OnConnect)
    XALLBACK_DECLARE_SFXANSISTRINGSTREAMREADER(OnFetch)
};

// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        ...

        // HTTP ステータスコードが 200 ( 成功 ) の場合
        if (_http.GetResultCode() == 200) {

            // HTTP レスポンスボディを読み込むためのデータ受信用ストリームを取得する
            if ((error = _http.GetStreamReader(1024, &_reader)) == SFERR_NO_ERROR) {

                // HTTP レスポンスボディからデータ受信用ストリームへデータを読み込む
                if ((error = _reader.Fetch(XALLBACK_INTERNAL(OnFetch))) == SFERR_NO_ERROR) {

                    ...

                }
            }
        }
        else {

            error = SFERR_INVALID_STATE;
        }
    }

    if (error != SFERR_NO_ERROR) {

        // エラーが発生したとき
       _http.Close();
    }

    return;
}
// 新しいデータを受信すると呼び出されるコールバック関数
XALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMREADER(MyClass, OnFetch, error)
{
    if (error == SFERR_NO_ERROR) {

        ...

    }
}

参照

SFXHTTPConnection::GetResponseContent | SFXHTTPConnection::GetStreamWriter | SFXHTTPConnection::Connect | SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader | ストリームバッファ


SFXHTTPConnection::GetStreamWriter
HTTP リクエストボディにデータを書き込むためのデータ送信用ストリームを取得します。
[ public ]
SFCError GetStreamWriter(
    UInt32 size                 // バッファサイズ
    SFXStreamWriterPtr result   // データ送信用ストリームへのポインタ
);
[ public ]
SFCError GetStreamWriter(
    SFXStreamWriterPtr result   // データ送信用ストリームへのポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき: SFERR_INVALID_PARAM
  • HTTP 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、この HTTP 接続の HTTP リクエストボディにデータを書き込むためのデータ送信用ストリームを取得します。

size 引数を指定する場合、ストリームバッファは指定したサイズで固定です。 指定しない場合は、ストリームバッファは可変長になり、 内部的に SFXElasticStreamWriter クラスが利用されます。

[Tip] Tip
データ送信用ストリームは、送信するデータの種類に応じて SFXBinaryStreamWriterSFXAnsiStringStreamWriter、または SFXWideStringStreamWriter クラスを使い分けます。
[Tip] Tip

SFXHTTPConnection::GetStreamWriter 関数を使用してデータを送信する場合、 一旦ヒープ上に HTTP リクエストボディが作成されるため、 送信可能なデータサイズは携帯電話に搭載されているメモリ容量に依存することになります。

SFXHTTPConnection::SetRequestContent 関数を使用してファイルストレージ(SFXFile)を設定すると、 ファイルから直接ネットーワークへデータが送信可能となり、大きなサイズのデータを送信できます。

[Caution] HTTP リクエストボディの作成

SFXHTTPConnection::SetRequestContent 関数を使用して HTTP リクエストボディを作成する場合は、 SFXHTTPConnection::GetStreamWriter 関数を使えません。

逆に、SFXHTTPConnection::GetStreamWriter 関数を使用して HTTP リクエストボディを作成する場合は、 SFXHTTPConnection::SetRequestContent 関数を使えません。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。

使用例

// HTTP 通信に必要な SFXHTTPConnection インスタンス _http はクラスのメンバ変数として定義する
class MyClass {
private:
    SFXHTTPConnection _http;
public:
    Void Start(Void);
    XALLBACK_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";

        // HTTP リクエストボディにデータを書き込むためのデータ送信用ストリームを取得する
        if ((error = _http.GetStreamWriter(send.GetLength(), &writer)) == SFERR_NO_ERROR) {

            // データ送信用ストリームにデータを書き込む
            if ((error = writer.WriteSFXAnsiString(send)) == SFERR_NO_ERROR) {

                // データ送信用ストリームをフラッシュを行う(実際に、HTTP リクエストボディにデータを書き込む)
                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", XALLBACK_INTERNAL(OnConnect))) == SFERR_NO_ERROR) {   
                           
                            // 接続を開始する

                            ...
                        }
                    }
                }
            }
        }
    }

    if (error != SFERR_NO_ERROR) { 

       // エラーが発生したとき
       _http.Close();
    }

    return;
}

// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        ....

    }

    return;
}

参照

SFXHTTPConnection::GetStreamReader | SFXHTTPConnection::SetRequestContent | SFXHTTPConnection::Open | SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter | ストリームバッファ


SFXHTTPConnection::GetTimeoutMillisecond
接続タイムアウト時間を取得します。 [単位: ミリ秒]
[ public, const ]
UInt32 GetTimeoutMillisecond(Void);

戻り値

接続タイムアウト時間 [単位: ミリ秒]

解説

この関数は、 接続タイムアウト時間を取得します。 [単位: ミリ秒]

参照

SFXHTTPConnection::SetTimeoutMillisecond | SFXHTTPConnection::SetTimeoutCallback


SFXHTTPConnection::GetTrustMode
HTTPS 通信の SSL 認証モードを取得します。
[ public, const ]
UInt32 GetTrustMode(Void);

戻り値

SSL 認証モード

解説

この関数は、HTTPS 通信の SSL 認証モードを取得します。

HTTP 接続の状態が STATE_OPEN でない場合、 0 を返します。

以下の 4 種類の SSL 認証モードの何れかが返却されます。

  • SSL_TRUST_MODE_FAIL: トラストエラーがあると接続が失敗します。[デフォルト]
  • SSL_TRUST_MODE_CHECK: トラストエラーの場合、チェックまたは無視できるように中断します。
  • SSL_TRUST_MODE_IGNORE: すべてのトラストエラーを無視します。
  • SSL_TRUST_MODE_ALWAYS: トラストをチェックできるように常に中断します。

参照

SFXHTTPConnection::SetTrustMode | SFXHTTPConnection::Open | BREW API ISSL_NegotiateV


SFXHTTPConnection::GetType
HTTP レスポンスヘッダーの Content-Type フィールドを取得します。
[ public, const ]
SFXAnsiStringConstRef GetType(Void);

戻り値

HTTP レスポンスヘッダーの Content-Type フィールド

解説

この関数は、この HTTP 接続の HTTP レスポンスヘッダーの Content-Type フィールドを取得します。

HTTP 接続の状態が STATE_OPEN_ESTABLISHED でない場合、 空文字列(SFXAnsiString::EmptyInstance()) を返します。

使用例

// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        // HTTP レスポンスヘッダーの Content-Type フィールドを取得する
        TRACE("content type = %s", _http.GetType().GetCString());

        ...

    }
}

参照

SFXHTTPConnection::Connect | SFXAnsiString


SFXHTTPConnection::GetUser
Basic 認証のユーザー名を取得します。
[ public, const ]
SFXAnsiStringConstRef GetUser(Void);

戻り値

ユーザー名

解説

Basic 認証のユーザー名を取得します。

SFXHTTPConnection::SetAuthorizeData 関数で設定された値が取得されます。

参照

SFXHTTPConnection::SetAuthorizeData


SFXHTTPConnection::GetUserAgent
ユーザーエージェントを取得します。
[ public, const ]
SFXAnsiStringConstRef GetUserAgent(Void);

戻り値

ユーザーエージェント

解説

この関数は、この HTTP 接続のユーザーエージェントを取得します。

HTTP 接続の状態が STATE_OPEN でない場合、 空文字列(SFXAnsiString::EmptyInstance()) を返します。

参照

SFXHTTPConnection::SetUserAgent | SFXHTTPConnection::Open | SFXAnsiString


LoadCertificate::LoadCertificate
ASN.1/DER 形式の証明書のファイルまたはバッファを読み込みます。
[ public ]
SFCError LoadCertificate(
    SInt32 kind            // 証明書の種類
    SFXPathConstRef path   // 証明書のファイルパス
);
[ public ]
SFCError LoadCertificate(
    SInt32 kind                // 証明書の種類
    SFXBufferConstRef buffer   // 証明書のバッファ
);

引数

kind

証明書の種類: WEBOPT_X509_ROOT_CERT, WEBOPT_X509_LEAF_CERT, WEBOPT_X509_BRANCH_CERT のいずれか

path

ASN.1/DER 形式の証明書のファイルパス

buffer

ASN.1/DER 形式の証明書のバッファ

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • HTTP 接続の状態が STATE_CLOSE でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY
  • サポートされていないとき: SFERR_UNSUPPORTED
  • その他失敗したとき: SFERR_FAILED

解説

ASN.1/DER 形式の証明書のファイルまたはバッファを読み込みます。

HTTP/HTTPS 接続を開く前に実行する必要があります。

使用例

ルート証明書を読み込む

SFXHTTPConnection http;
SFCError error;

// 接続を開く前にルート証明書を読み込む
if ((error = http.LoadCertificate(WEBOPT_X509_ROOT_CERT, SFXPath("scradle.der"))) == SFERR_NO_ERROR) {
    if ((error = http.Open()) == SFERR_NO_ERROR) {
        error = http.Connect("https://www.s-cradle.com/example/tabbrowser/", XALLBACK_INTERNAL(OnConnect));
    }
}

参照

SFBX509Chain::AddCert


SFXHTTPConnection::Open
HTTP 接続を開きます。
[ public ]
SFCError Open(
    AEECLSID id = AEECLSID_WEB   // ClassID
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • HTTP 接続の状態が STATE_CLOSE でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、この HTTP 接続を開きます。

HTTP 接続の状態は、STATE_OPEN_UNESTABLISHED になります。

具体的には、以下の処理を行います。

  1. この HTTP 接続が内部で管理する SFBWeb インスタンスを生成します。
  2. HTTP リクエストの内容を初期化します。
  3. HTTP リクエストメソッドを "GET" に設定します。
  4. HTTP リクエストボディを書き込む内部ストレージを開きます。
  5. STATE_OPEN_UNESTABLISHED 状態に遷移します。
[Note] 注意

この関数を実行した段階では、Web サーバーへの接続は確立されていません。

Web サーバーへの接続を確立するには、 この HTTP 接続の HTTP リクエストを作成し、 SFXHTTPConnection::Connect 関数を呼び出す必要があります。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_CLOSE のときにのみ有効です。

使用例

// HTTP 通信に必要な 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;
}

参照

SFXHTTPConnection::SetMethod | SFXHTTPConnection::Connect | SFBWeb


SFXHTTPConnection::SetAuthorizeData
HTTP ベーシック認証の情報を設定します。
[ public ]
SFCError SetAuthorizeData(
    SFXAnsiStringConstRef user     // ユーザー名
    SFXAnsiStringConstRef passwd   // パスワード
    SFXAnsiStringConstRef url      // HTTP ベーシック認証の開始 URL
);

引数

user

ユーザー名を指定します。

passwd

パスワードを指定します。

url

URL を指定します。 この URL から始まるページが、認証の対象となります。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMOERY
  • HTTP/HTTPS 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE

解説

この関数は、HTTP ベーシック認証の情報を設定します。

この関数を実行した後、 url 引数に指定した URL で始まるページへのアクセスは、 指定された認証情報を持つヘッダーをつけて行われます。

HTTP/HTTPS 接続の状態が STATE_OPEN のときのみ呼び出しが成功します。

認証情報の設定を解除する時は、空文字列を指定してこの関数を呼び出します。

また、 url 引数に指定した URL で始まらないページをアクセスした場合、 認証情報は使用されません。

[Note] 注意

戻り値が SFERR_NO_ERROR 以外の場合は、ベーシック認証は行われません。

参照

SFXHTTPConnection::Open


SFXHTTPConnection::SetMethod
HTTP リクエストメソッドを設定します。
[ public ]
SFCError SetMethod(
    SFXAnsiStringConstRef param   // HTTP リクエストメソッド
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • HTTP 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、この HTTP 接続の HTTP リクエストメソッドを設定します。

引数には、"GET"、"POST"、"HEAD" など BREW の IWeb インターフェースが対応している HTTP リクエストメソッドを指定できます。

デフォルト値: "GET"

設定された値は、 SFXHTTPConnection::Close 関数、または SFXHTTPConnection::Clear 関数が呼び出されるまで有効です。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。

使用例

// HTTP 通信に必要な 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" に設定する
        error = _http.SetMethod("GET");
        ...
    }

    if (error != SFERR_NO_ERROR) {
        // エラーが発生したとき
        ...
    }
    return;
}

参照

SFXHTTPConnection::GetMethod | SFXHTTPConnection::Open | SFXHTTPConnection::Close | SFXHTTPConnection::Clear | SFXAnsiString | BREW API IWeb


SFXHTTPConnection::SetProxyServer
プロキシサーバーを設定します。
[ public ]
SFCError SetProxyServer(
    SFXSocketAddressConstRef param   // プロキシサーバー
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • HTTP 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、この HTTP 接続のプロキシサーバー(SFXSocketAddress)を設定します。

設定された値は、 SFXHTTPConnection::Close 関数、または SFXHTTPConnection::Clear 関数が呼び出されるまで有効です。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。

使用例

// HTTP 通信に必要な 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;
}

参照

SFXHTTPConnection::GetProxyServer | SFXHTTPConnection::Open | SFXHTTPConnection::Close | SFXHTTPConnection::Clear | SFXSocketAddress


SFXHTTPConnection::SetRequestContent
HTTP リクエストボディにストレージまたはソースを設定します。
[ public ]
SFCError SetRequestContent(
    SFXFileConstRef file   // HTTP リクエストボディに設定するファイルストレージ
);
[ public ]
SFCError SetRequestContent(
    SFXMemoryConstRef memory   // HTTP リクエストボディに設定するメモリストレージ
);
[ public ]
SFCError SetRequestContent(
    SFXStorageConstRef storage   // HTTP リクエストボディに設定するストレージ
    SInt32 length                // ストレージの長さ
);
[ public ]
SFCError SetRequestContent(
    SFBSourceSmpConstRef source   // HTTP リクエストボディに設定するソース
    SInt32 length                 // ソースの長さ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 引数が null のとき: SFERR_INVALID_PARAM
  • HTTP 接続の状態が STATE_OPEN でないとき、または引数に指定したストレージ/SFBSource インスタンスが開いていないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、 この HTTP 接続の HTTP リクエストボディにストレージまたはソースを設定します。

引数にファイルストレージまたはメモリストレージだけを指定したとき、 そのストレージ全体の長さが自動的に設定されます。

length 引数を指定する場合、 ストレージまたはソースの現在の読み書きポインタの位置から指定した長さ分のデータが HTTP リクエストボディに設定されます。

[Tip] Tip

SFXHTTPConnection::SetRequestContent 関数を使用してファイルストレージ(SFXFile)を設定すると、 ファイルから直接ネットーワークへデータが送信可能となり、 大きなサイズのデータを送信できます。

SFXHTTPConnection::GetStreamWriter 関数を使用してデータを送信する場合、 一旦ヒープ上に HTTP リクエストボディが作成されるため、 送信可能なデータサイズは携帯電話に搭載されているメモリ容量に依存することになります。

[Caution] HTTP リクエストボディの作成

SFXHTTPConnection::SetRequestContent 関数を使用して HTTP リクエストボディを作成する場合は、 SFXHTTPConnection::GetStreamWriter 関数を使えません。

逆に、SFXHTTPConnection::GetStreamWriter 関数を使用して HTTP リクエストボディを作成する場合は、 SFXHTTPConnection::SetRequestContent 関数を使えません。

設定された値は、 SFXHTTPConnection::Close 関数、または SFXHTTPConnection::Clear 関数が呼び出されるまで有効です。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。
[Note] 注意

SFXHTTPConnection::SetRequestContent 関数は、 SophiaFramework UNIVERSE 5.1.11 以降有効です。

参照

SFXHTTPConnection::GetRequestContent | SFXHTTPConnection::GetStreamWriter | SFXHTTPConnection::Open | SFXHTTPConnection::Close | SFXHTTPConnection::Clear | SFBSource | SFXStorage


SFXHTTPConnection::SetRequestFlag
HTTP リクエストフラグを設定します。
[ public ]
SFCError SetRequestFlag(
    UInt32 param   // HTTP リクエストフラグ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • HTTP 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE

解説

この関数は、この HTTP 接続の HTTP リクエストフラグを設定します。

[Note] 注意
HTTP リクエストフラグは、内部的に IWEB_GetResponse 関数に渡されます。

具体的には、以下のフラグの論理和として設定します。

  • WEBREQUEST_REDIRECT: リダイレクトを自動的に処理します。 (BREW の HTTP プロトコルエンジンには実装されていない)
  • WEBREQUEST_NOCOOKIES: クッキーを処理せずに、ヘッダをそのまま渡します。 (BREW の HTTP プロトコルエンジンには実装されていないが、この動作はデフォルト)
  • WEBREQUEST_NOCACHE: プロキシを使用する場合に、"Pragma: no-cache" を送信します。 (BREW の HTTP プロトコルエンジンには実装されていない)
  • WEBREQUEST_NOKEEPALIVE: キープアライブを無効にします。
  • WEBREQUEST_FORCENEWCONN: 新規接続を強制します。
  • WEBREQUEST_NOWAITCONN: 再利用可能な接続を待たずに、新規接続を行います。
  • WEBREQUEST_HTTPBOGUSCRLF: CERN Webserver のバグを回避するために、余分な CRLF を追加します。

設定された値は、 SFXHTTPConnection::Close 関数、または SFXHTTPConnection::Clear 関数が呼び出されるまで有効です。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。

参照

SFXHTTPConnection::GetRequestFlag | SFXHTTPConnection::Open | SFXHTTPConnection::Close | SFXHTTPConnection::Clear | BREW API IWEB_GetResponse


SFXHTTPConnection::SetRequestHeader
HTTP リクエストヘッダーを設定します。
[ public ]
SFCError SetRequestHeader(
    SFXAnsiStringConstRef key     // ヘッダーの名前
    SFXAnsiStringConstRef value   // ヘッダーの値
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ヘッダーの名前が User-Agent、Content-Length、Connection のいずれかであったとき:SFERR_INVALID_PARAM
  • HTTP 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、この HTTP 接続の HTTP リクエストヘッダーを設定します。

同一の key で複数回呼ばれた場合は、すべて記憶してリクエスト時に送信されます。

設定された値は、 SFXHTTPConnection::Connect 関数、SFXHTTPConnection::Close 関数、または SFXHTTPConnection::Clear 関数を呼び出すまで有効です。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。

参照

SFXHTTPConnection::GetRequestHeader | SFXHTTPConnection::Open | SFXHTTPConnection::Close | SFXHTTPConnection::Clear | SFXHTTPConnection::Connect


SFXHTTPConnection::SetTimeoutCallback
接続タイムアウトコールバックを設定します。
[ public ]
Void SetTimeoutCallback(
    SFXCallback::CallbackSPP spp   // コールバック関数
    VoidPtr reference              // コールバック関数に渡すデータ(参照値)
);

解説

この関数は、 通信開始から接続タイムアウト時間を過ぎても応答がない場合に呼び出されるコールバック関数を設定します。

コールバック関数を設定しなかった場合は、 SFXHTTPConnection::OnTimeoutDefault 関数が登録されていることになります。

SFXHTTPConnection::OnTimeoutDefault 関数は、以下の内部実装コードにあるように、 SFXHTTPConnection::Cancel 関数を呼び出して通信をキャンセルします。

/*private */XALLBACK_IMPLEMENT_SFXTIMER(SFXHTTPConnection, OnTimeoutDefault)
{
    Cancel();
    return;
}// XALLBACK_IMPLEMENT_SFXTIMER(SFXHTTPConnection, OnTimeoutDefault)
[Note] 注意

接続タイムアウト時間は、 SFXHTTPConnection::SetTimeoutMillisecond 関数を利用して設定します。

参照

SFXHTTPConnection::SetTimeoutMillisecond | SFXHTTPConnection::Cancel


SFXHTTPConnection::SetTimeoutMillisecond
接続タイムアウト時間を設定します 。[単位: ミリ秒]
[ public ]
Void SetTimeoutMillisecond(
    UInt32 msec   // 接続タイムアウト時間 [単位: ミリ秒]
);

解説

この関数は、 接続タイムアウト時間を設定します 。[単位: ミリ秒]

デフォルト値: 0(タイムアウト処理を行いません)

通信開始からタイムアウト時間を過ぎても応答がない場合、 SFXHTTPConnection::SetTimeoutCallback 関数で設定する接続タイムアウトコールバックが呼び出されます。

[Note] 注意

接続タイムアウト時間が 0 のとき、タイムアウト処理を行いません。

参照

SFXHTTPConnection::GetTimeoutMillisecond | SFXHTTPConnection::SetTimeoutCallback


SFXHTTPConnection::SetTrustMode
HTTPS 通信の SSL 認証モードを設定します。
[ public ]
SFCError SetTrustMode(
    UInt32 param   // SSL 認証モード
);

引数

param

以下の 4 種類の何れかの SSL 認証モードを指定します。

  • SSL_TRUST_MODE_FAIL: デフォルトです。認証エラーがあると接続が失敗します。
  • SSL_TRUST_MODE_CHECK: 認証エラーの場合、チェックまたは無効にできるように中断します。
  • SSL_TRUST_MODE_IGNORE: すべての認証エラーを無効にします。
  • SSL_TRUST_MODE_ALWAYS: 認証をチェックできるように常に中断します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • HTTP 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE

解説

この関数は、HTTPS 通信の SSL 認証モードを設定します(HTTPS 通信の場合に有効です)。

デフォルト値: SSL_TRUST_MODE_FAIL

設定可能な SSL 認証モードは、 以下の 4 種類です(参照: BREW API ISSL_NegotiateV)。

  • SSL_TRUST_MODE_FAIL: トラストエラーがあると接続が失敗します。[デフォルト]
  • SSL_TRUST_MODE_CHECK: トラストエラーの場合、チェックまたは無視できるように中断します。
  • SSL_TRUST_MODE_IGNORE: すべてのトラストエラーを無視します。
  • SSL_TRUST_MODE_ALWAYS: トラストをチェックできるように常に中断します。

設定された値は、 SFXHTTPConnection::Close 関数、または SFXHTTPConnection::Clear 関数が呼び出されるまで有効です。

実機において、この値を変更した直後の SFXHTTPConnection::Connect 関数の呼び出しでは SSL_RESULT_SERV_VERS エラーが発生することがあります。

エラーを避けるには、一度 SFXHTTPConnection::Close 関数、または SFXHTTPConnection::Clear 関数を呼び出してからSSL 認証モードを設定し、 SFXHTTPConnection::Connect 関数を呼び出します。

[Note] 注意

詳細情報: BREW API ISSL_NegotiateV

[Note] 注意

この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。

使用例

// HTTP 通信に必要な SFXHTTPConnection インスタンス _http はクラスのメンバ変数として定義する
class MyClass {
private:
    SFXHTTPConnection _http;
public:
    Void Start(Void);   
    XALLBACK_DECLARE_SFXHTTPCONNECTION(OnConnect) 
};

// HTTP 接続を開始する
Void MyClass::Start(Void)
{
    SFCError error(SFERR_NO_ERROR);

    // HTTP 接続を開く
    if ((error = _http.Open()) == SFERR_NO_ERROR) {
    
        // SSL 認証モードを設定する
        _http.SetTrustMode(SSL_TRUST_MODE_FAIL);
        
        // 接続を開始する
        if ((error = _http.Connect("https://www.example.com/",
                         XALLBACK_INTERNAL(OnConnect))) == SFERR_NO_ERROR) {
           ...
        }else{
            // エラーが発生したとき
            _http.Close();
        }
        
    }

    if (error != SFERR_NO_ERROR) {  
        // エラーが発生したとき
        ...
    }
    return;
}
// 接続要求の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXHTTPCONNECTION(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) {

        ...

    }
}

参照

SFXHTTPConnection::GetTrustMode | SFXHTTPConnection::Connect | SFXHTTPConnection::Open | SFXHTTPConnection::Close | SFXHTTPConnection::Clear | BREW API ISSL_NegotiateV


SFXHTTPConnection::SetUserAgent
ユーザーエージェントを設定します。
[ public ]
SFCError SetUserAgent(
    SFXAnsiStringConstRef param   // ユーザーエージェント
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • HTTP 接続の状態が STATE_OPEN でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、この HTTP 接続のユーザーエージェントを設定します。

設定された値は、 SFXHTTPConnection::Close 関数、または SFXHTTPConnection::Clear 関数が呼び出されるまで有効です。

[Note] 注意
この関数は、HTTP 接続の状態が STATE_OPEN のときにのみ有効です。

参照

SFXHTTPConnection::GetUserAgent | SFXHTTPConnection::Open | SFXHTTPConnection::Close | SFXHTTPConnection::Clear | SFXAnsiString


SFXHTTPConnection::CallbackSPP
HTTP 接続の結果が通知されるコールバック関数の型です。
typedef Void(* SFXHTTPConnection::CallbackSPP)(SFCError error, VoidPtr reference)

解説

HTTP 接続の結果が通知されるコールバック関数の型です。

第 1 引数にエラーコード、 第 2 引数は SFXHTTPConnection::Connect 関数でコールバック登録したときの参照値(コールバック関数に渡すデータ。 通常、SFXHTTPConnection インスタンス )が渡されます。

参照

SFXHTTPConnection::Connect


SFXHTTPConnection::StateEnum
HTTP/HTTPS 接続の状態を表す列挙体
enum StateEnum {
    STATE_CLOSE = 0,    // HTTP/HTTPS 接続を初期化していない状態
    STATE_OPEN,         // Web サーバーへ接続する前後の状態
    STATE_CONNECT       // Web サーバーへ接続中である状態
};
SFMTYPEDEFTYPE(StateEnum)

解説

HTTP 接続(SFXHTTPConnection インスタンス)は、 以下の 3 種類の状態を遷移します(正確には 4 種類の状態を遷移します)。

表 216. HTTP 接続の状態

HTTP 接続の状態 解説
STATE_CLOSE

HTTP 接続を初期化していない状態です。

SFXHTTPConnection インスタンス生成直後 (SFXHTTPConnection::SFXHTTPConnection コンストラクタ実行直後)、または SFXHTTPConnection::Close 関数を呼び出すと、 STATE_CLOSE の状態になります。

STATE_OPEN(STATE_OPEN_UNESTABLISHED/STATE_OPEN_ESTABLISHED)

Web サーバーへ接続する前の状態と、接続した後の状態を表します。 両方とも、HTTP 接続は初期化済みの状態です。

便宜上、このリファレンスでは、 それぞれ STATE_OPEN_UNESTABLISHED、STATE_OPEN_ESTABLISHED と呼びます(STATE_OPEN は、これら 2 つをまとめた状態を表します )。

STATE_CLOSE の状態で、 SFXHTTPConnection::Open 関数を呼び出すと、STATE_OPEN_UNESTABLISHED の状態になります。 また、STATE_OPEN_ESTABLISHED の状態で SFXHTTPConnection::Clear 関数を呼び出すと、STATE_OPEN_UNESTABLISHED の状態になります。

STATE_CONNECT

Web サーバーへ接続中である状態を表します。

STATE_OPEN の状態で、 SFXHTTPConnection::Connect 関数を呼び出すと、STATE_CONNECT の状態になりますが、 この関数で指定するコールバック関数(※)に接続の結果が通知されると、 STATE_OPENの状態に戻ります(接続に成功した場合は STATE_OPEN_ESTABLISHED、失敗した場合は STATE_OPEN_UNESTABLISHED)。

参照

SFXHTTPConnection::GetState | SFXHTTPConnection::Connect


SFXHTTPConnection::GetPassword
Basic 認証のパスワードを取得します。
[ public, const ]
SFXAnsiStringConstRef GetPassword(Void);

戻り値

Basic 認証のパスワード

解説

Basic 認証のパスワードを取得します。

SFXHTTPConnection::SetAuthorizeData 関数で設定された値が取得されます。

参照

SFXHTTPConnection::SetAuthorizeData