通信/セッション

Q1
通信のタイムアウトを設定したい

A1
[解決方法]
Biz/Browserは、通信にInternetExplorerにより提供されるWinInetを利用しています。

(1)通信全体の設定
  RootクラスのHttpTimeoutプロパティに秒数を指定します。
0を指定した場合は、解除され、WinInetのタイムアウト時間になります。初期値は、0です。
指定したタイムアウト値は、指定したプロセス内でのみ作用します。プロセスが
停止するまで接続先に関わらず有効となり、Loginを実行しても解除されません。
なお、WinInetのタイムアウト値を超えた値を指定した場合、WinInetの値が優先されます。

(2)通信リクエスト固有の設定
  httpRequest クラスのTimeOutプロパティに秒数を指定します。
初期値は、//.HttpTimeout(上記@)の指定値です。
//.HttpTimeoutでの設定がない場合、または、0を指定した場合は、WinInetの
タイムアウト時間となります。
なお、WinInetのタイムアウト値を超えた値を指定した場合、WinInetの値が優先されます。

通信リクエスト固有のタイムアウト設定は、httpRequestクラスによる指定となるため、
これを使わない通信では、固有のタイムアウトを設定することはできません。
常に//.HttpTimeoutでの設定値が有効となります。
以下はhttpRequestを利用しない通信例です。

 ・ NetObjectクラスのGetメソッド(crsファイルのダウンロードと実行)
 ・ Import命令(パッケージのロード)
 ・ ImageクラスのLoadImageメソッドへURLを指定したとき
 ・ ImageLabel、ImageButtonクラスのSetImageメソッドへURLを指定したとき
 ・ DisplayObjectクラスのSetCursorメソッドへURLを指定したとき
 ・ CSVDocumentクラスのGetメソッド(CSVファイルのロード)

なお、WinInetのタイムアウト値に関しては、マイクロソフト社の仕様に準じ、弊社での
保証はできません。

  [サンプルコード]
(1)最初に実行するcrsに記述します。

  //.HttpTimeout = 300; /* タイムアウト時間 5分 */ (2)通信毎に記述します。
 ・Postの場合 var session = GetHttpSession(); var request = session.CreateRequest("/xxx..jsp"); request.addparam("abc", "123"); request.addparam("def", "456"); request.Timeout = 180; /* この通信のタイムアウト3分 */ try{ response = session.post(request); } catch(exp){ MessageBox("タイムアウトが発生しました"); }  ・Getの場合 var session = GetHttpSession(); var request = session.CreateRequest("/xxx..jsp?abc=123&def=456"); request.Timeout = 180; /* この通信のタイムアウト3分 */ try{ response = session.get(request); } catch(exp){ MessageBox("タイムアウトが発生しました"); }
管理番号:BMP_D005
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser Mobile・Biz/Designer Mobile TIPS集 トップへ