HTTP 要求
祖先 - ブジェクト (PRIM_OBJT)
HTTPRequest を使用すると、サードパーティの HTTP サービスにアクセスできるため、 LANSA を他の Web サービスと統合することができます。 HTTPRequest は事実上 JavaScript の標準 XMLHttpRequest です。 HTTPRequests は、実行するルーチン内で定義する必要があります。これにより、実行されるたびに新しいインスタンスが作成されます。Completed イベントと Failed イベントのこれに相当するイベント・ルーチンは、同じルーチンでコーディングされています。 LANSA ランタイムは、完了するまでインスタンスを維持します。これにより、同じルーチンが何度も実行され、多くの要求が実行され、それぞれ独立して結果が生成されます。 HTTPRequest がグローバルスコープとして存在する場合、 1 つのインスタンスしか存在しません。つまり、複数の要求が互いに干渉しあう場合があります。 ですから、HTTPRequest インスタンスは EVTROUTINE で定義できません。これは、イベントルーチンは Completed や Failed イベントを処理する別の子イベントルーチンを持つことができないからです。HTTPRequest インスタンスは、メソッド ルーチンで定義して呼び出すようにしてください。そして、イベントルーチンからこのメソッドルーチンを呼び出します。
この例では、 Weather API が非同期で実行され、データを JSON オブジェクトとして返します。 完了 (completed) イベントが発生すると、結果が処理されます。
Mthroutine Name(GetWeather) Access(*PRIVATE) Define_Map For(*INPUT) Class(#Prim_Str) Name(#Resource) Define_Com Class(#PRIM_WEB.HttpRequest) Name(#Request) Define_Com Class(#PRIM_WEB.Json) Name(#Json) #Request.Url := "http://api.openweathermap.org" + #Resource #Com_owner.UpdateForPending #Request.ExecuteAsync Evtroutine Handling(#Request.Completed) If (#Request.Response *IsNot *null) Case (#Request.Response.StatusCode) When (= 200) #Json := #Request.Response.Content #Com_owner.Update( #Json.RootItem ) Otherwise #Com_owner.UpdateForFailure( #Request ) Endcase Endif Endroutine Endroutine
名前 | 記述 |
---|---|
ComponentClassName | コンポーネントのクラス名です。 ブジェクト (PRIM_OBJT) より継承 |
ComponentMembers | このコンポーネントの全てにアクセスできるようにします。 ブジェクト (PRIM_OBJT) より継承 |
ComponentPatternName | コンポーネントのクラスを制限します。 ブジェクト (PRIM_OBJT) より継承 |
ComponentTag | インスタンス用に値を格納できる汎用スペース ブジェクト (PRIM_OBJT) より継承 |
ComponentType | ComponentType ではコンポーネントのタイプ情報にアクセスできます。 ブジェクト (PRIM_OBJT) より継承 |
ComponentTypeName | ComponentTypeName 十分適格なコンポーネントのクラス名です。 ブジェクト (PRIM_OBJT) より継承 |
Content | HTTP 要求の内容 |
Headers | HTTP ヘッダー |
Method | GET、POST などの標準 HTTP 要求メソッド |
Name | コンポーネントの名前 ブジェクト (PRIM_OBJT) より継承 |
Owner | コンポーネントのオーナーです。 ブジェクト (PRIM_OBJT) より継承 |
Parent | このインスタンスが添付されているコンポーネント インスタンス。コントロールのビジュアル コンテナまたは子インスタンスのコレクション ブジェクト (PRIM_OBJT) より継承 |
Response | 要求により返された HTTP 応答オブジェクトへの参照 |
Status | 標準 HTTP 要求のステータス コード |
Timeout | 標準 HTTP 要求タイムアウト |
Url | 要求の URL |
名前 | 記述 |
---|---|
Completed | 処理の正常終了後 HTTP 要求が返された時に起動されます。 |
CreateInstance | コンポーネントを作成する時に CreateInstance のイベントを実行します。 HttpRequest クラス (PRIM_WEB.HttpRequest) より継承 |
DestroyInstance | コンポーネントが解除される前に DestroyInstance のイベントを実行します。 HttpRequest クラス (PRIM_WEB.HttpRequest) より継承 |
Failed | 処理の異常終了後 HTTP 要求が返された時に起動されます。 |
名前 | 記述 |
---|---|
Cancel | HTTP 要求をキャンセルします。 |
Execute | 要求を同期的に実行します。 |
ExecuteAsync | 要求を非同期に実行します。 |
2018 - V14SP1