com.nttdocomo.io
インタフェース ClientObexConnection

すべてのスーパーインタフェース:
javax.microedition.io.Connection, javax.microedition.io.InputConnection, ObexConnection, javax.microedition.io.OutputConnection, javax.microedition.io.StreamConnection

public interface ClientObexConnection
extends ObexConnection

OBEX でクライアントとして通信を行う場合の接続を定義します。 オペレーションとして PUT と GET をサポートしています。 一回の接続で複数回 sendRequest メソッドを呼び出すことが可能で、 連続して複数のリクエストを送信することができます。

OutputStream または DataOutputStream に出力したデータが PUT オペレーションの BODY ヘッダの内容としてサーバに送信されます。 GET オペレーションの場合、OutputStream または DataOutputStream に出力したデータは無視されます。
また、GET オペレーションに対するレスポンスの BODY ヘッダの内容は InputStream または DataInputStream から読み出すことができます。 PUT オペレーションに対するレスポンスの場合、 InputStream または DataInputStream は常に空のストリームとなります。 ObexConnection インタフェースで定義されている getContentLength メソッドは レスポンスの BODY ヘッダ内のコンテンツの長さを返します。

以下に PUT オペレーションを使用する場合のコード例を示します。

   try {
       ClientObexConnection coc;
       coc = (ClientObexConnection)Connector.open("obex:/irclient");
       coc.connect(); // IrDA の場合、この時点でデバイスに通電して
                      // CONNECT オペレーションを発行します。
       while (true) { // 複数のオペレーションを行う場合のループ。
                      // ループの中で PUT と GET を組み合わせて使用してもよい。
           coc.setOperation(ObexConnection.PUT);
           coc.setName("foo");
           OutputStream out = coc.openOutputStream();
           // 書き込み処理
           out.close();
           coc.sendRequest(); // IrDA の場合、この時点で PUT オペレーションを
                              // 送信して、レスポンスを受け取ります。
           int response = coc.getResponseCode();
       }
       coc.close(); // IrDA の場合、この時点で DISCONNECT オペレーションを
                    // 発行して、デバイスをオフにします。
   } catch (IOException e) {
   }
 
また、以下に GET オペレーションを使用する場合のコード例を示します。
   try {
       ClientObexConnection coc;
       coc = (ClientObexConnection)Connector.open("obex:/irclient");
       coc.connect(); // IrDA の場合、この時点でデバイスに通電して
                      // CONNECT オペレーションを発行します。
       while (true) { // 複数のオペレーションを行う場合のループ。
                      // ループの中で PUT と GET を組み合わせて使用してもよい。
           coc.setOperation(ObexConnection.GET);
           coc.setName("bar");
           coc.sendRequest(); // IrDA の場合、この時点で GET オペレーションを
                              // 送信して、レスポンスを受け取ります。
           int response = coc.getResponseCode();
           InputStream in = coc.openInputStream();
           // 読み出し処理
           in.close();
       }
       coc.close(); // IrDA の場合、この時点で DISCONNECT オペレーションを
                    // 発行して、デバイスをオフにします。
   } catch (IOException e) {
   }
 

導入されたバージョン:
DoJa-2.0

フィールドの概要
 
インタフェース com.nttdocomo.io.ObexConnection から継承したフィールド
ACCEPTED, BAD_GATEWAY, BAD_REQUEST, CONFLICT, CONTINUE, CREATED, DATABASE_FULL, DATABASE_LOCKED, DISCONNECT, FORBIDDEN, GATEWAY_TIMEOUT, GET, GONE, HTTP_VERSION_NOT_SUPPORTED, INTERNAL_SERVER_ERROR, LENGTH_REQUIRED, METHOD_NOT_ALLOWED, MOVED_PERMANENTLY, MOVED_TEMPORARILY, MULTIPLE_CHOICES, NO_CONTENT, NON_AUTHORITATIVE_INFORMATION, NOT_ACCEPTABLE, NOT_FOUND, NOT_IMPLEMENTED, NOT_MODIFIED, PARTIAL_CONTENT, PAYMENT_REQUIRED, PRECONDITION_FAILED, PROXY_AUTHENTICATION_REQUIRED, PUT, REQUEST_ENTITY_TOO_LARGE, REQUEST_TIME_OUT, REQUEST_URL_TOO_LARGE, RESET_CONTENT, SEE_OTHER, SERVICE_UNAVAILABLE, SUCCESS, UNAUTHORIZED, UNSUPPORTED_MEDIA_TYPE, USE_PROXY
 
メソッドの概要
 void connect()
           接続を確立します。
 int getResponseCode()
           レスポンスコードを取得します。
 void sendRequest()
           リクエストを送信して、レスポンスの受信を完了するまで待ちます。
 void setOperation(int operation)
           オペレーションコードを設定します。
 
インタフェース com.nttdocomo.io.ObexConnection から継承したメソッド
getContentLength, getName, getTime, getType, setName, setTime, setType
 
インタフェース javax.microedition.io.InputConnection から継承したメソッド
openDataInputStream, openInputStream
 
インタフェース javax.microedition.io.Connection から継承したメソッド
close
 
インタフェース javax.microedition.io.OutputConnection から継承したメソッド
openDataOutputStream, openOutputStream
 

メソッドの詳細

connect

public void connect()
             throws java.io.IOException
接続を確立します。

例外:
IllegalStateException - [DoJa-2.1] 通話中に呼び出された場合に発生します。
ConnectionException - [DoJa-2.0] サポートしている以上の接続を使おうとした場合に発生します(RESOURCE_BUSY)。
ConnectionException - [DoJa-3.0] 既に接続要求発行中の別スレッドが存在するか、別オブジェクトにより既に通信リソースが使用されている場合に発生します(RESOURCE_BUSY)。
ConnectionException - [DoJa-3.0] 赤外線リモコンが通信中である場合に発生します (RESOURCE_BUSY)。
ConnectionException - 端末がセルフモードの場合に発生します(SELF_MODE)。
SecurityException - OBEX の使用が許可されていない場合に発生します。
java.io.InterruptedIOException - [DoJa-2.0] 別スレッドからの中断要求やサスペンド により通信が中断された場合に発生します。
java.io.InterruptedIOException - [DoJa-3.0] 別スレッドからの中断要求やサスペンド、 待ち受けアプリケーションでの非活性化状態への遷移により通信が中断された場合に発生します。
java.io.InterruptedIOException - [DoJa-3.5] 別スレッドからの中断要求発生、動画再生の開始、 サスペンド状態や待ち受けアプリケーションでの非活性化状態への遷移により、 通信が中断された場合に発生します。
ConnectionException - ネイティブのOBEXレイヤでタイムアウトが発生した場合に発生します(TIMEOUT)。
ConnectionException - ユーザが通信開始を許可しなかった場合や、 ユーザ操作により通信を中断された場合に発生します(USER_ABORT)。
java.io.IOException - I/O エラーが発生した場合に発生します。

setOperation

public void setOperation(int operation)
オペレーションコードを設定します。 設定できるオペレーションは "PUT" と "GET" です。

パラメータ:
operation - オペレーションコードを指定します。
例外:
RuntimeException - 呼び出してはならない状態の時に呼び出された場合に発生します。
IllegalArgumentException - 引数 operation にサポートしていないオペレーションコードが指定された場合に発生します。
IllegalArgumentException - WRITEモードでの接続に対してGETオペレーションが指定された場合やREADモードでの接続に対してPUTオペレーションが指定された場合に発生します。

sendRequest

public void sendRequest()
                 throws java.io.IOException
リクエストを送信して、レスポンスの受信を完了するまで待ちます。 このメソッドを呼び出すとリクエストを送信して、 レスポンスが到着するまでブロックします。 レスポンスを全て受信し終わったらこのメソッドから戻ります。

このメソッドを呼び出すことによって、それより前にこの接続オブジェクトから 取り出した InputStream, DataInputStream, OutputStream, DataOutputStream が無効になります。 次に InputStream, DataInputStream を取り出した時は、 このオペレーションで受信したデータを読み出す入力ストリームを返します。 また、次に OutputStream, DataOutputStream を取り出した時は、 次のオペレーションで送信するデータを書き込む出力ストリームを返します。

例外:
IllegalStateException - 通話中に呼び出された場合に発生します。
ConnectionException - オペレーションコードがセットされていない場合に発生します(ILLEGAL_STATE)。
SecurityException - [DoJa-3.0] OBEX の使用が許可されていない場合に発生します。
java.io.InterruptedIOException - [DoJa-2.0] 別スレッドからの中断要求やサスペンド により通信が中断された場合に発生します。
java.io.InterruptedIOException - [DoJa-3.0] 別スレッドからの中断要求やサスペンド、 待ち受けアプリケーションでの非活性化状態への遷移により通信が中断された場合に発生します。
java.io.InterruptedIOException - [DoJa-3.5] 別スレッドからの中断要求発生、動画再生の開始、 サスペンド状態や待ち受けアプリケーションでの非活性化状態への遷移により、 通信が中断された場合に発生します。
ConnectionException - ネイティブのOBEXレイヤでタイムアウトが発生した場合に発生します(TIMEOUT)。
ConnectionException - ユーザ操作により通信が中断された場合に発生します(USER_ABORT)。
java.io.IOException - I/O エラーが発生した場合に発生します。
ConnectionException - レスポンスコードが 0x20 番台 (generally ok 系の ステータスコード) 以外のコードだった場合に発生します(OBEX_ERROR)。

getResponseCode

public int getResponseCode()
レスポンスコードを取得します。 直前に実行した sendRequest メソッドにおいて受信した レスポンスのレスポンスコードを返します。

[DoJa-3.0]
1つのデータを複数のパケットに分割して受信した場合、 一番最後に受信したパケットのレスポンスコードを返します。

戻り値:
レスポンスコードを返します。
例外:
RuntimeException - 呼び出してはならない状態の時に呼び出された場合に発生します。


NTT DoCoMo,Inc.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。