東京で雪がすごいふってるらしい・・・okita です。
今回は他のシステムと GeneXus で作成したシステムのHTTP通信です。
GeneXus で API を作成し
そのAPIに対して他のシステム(AndroidとかiOS)からアクセスをしよう!
というコトです。
web系なのでRestとかSOAPとかあると思いますが、今回はHTTP通信にします。
GeneXus 側の作成は簡単です。
■変数
&SDT_Result ⇒ SDTです。中の構造は適当です。
1 2 3 4 5 6 7 |
// 出力したいデータを変数に格納する &SDT_Result.status = 0 &SDT_Result.data = "Test HTTP Access" // 文字列レスポンス(型はJSON)としてを出力する &HttpResponse.AddHeader('Content-Type','application/json; charset=utf-8') &HttpResponse.AddString(&SDT_Result.ToJson()) |
あとはプロシージャの設定を
Main program ⇒ True
Call protocol ⇒ HTTP
これだけです。
これで今作成したプロシージャに直接アクセスします。
すると
1 |
{"status":0,"data":"Test HTTP Access"} |
が出力されます。たったこれだけかよ
あとは Android でも iOS でも好きな言語から
作成したAPIにアクセスしてレスポンスからJSONを取得し
解析したら今回の目的達成!
いろいろと悩みました・・・
1 |
&HttpResponse.AddHeader('Content-Type','application/json; charset=utf-8') |
この部分がなかなか出てこなかったw
この部分が無くても基本動きます。
ただしある一部の言語でアクセスすると
レスポンスが取得できないという事態になりました(´・ω・`)
Content-Type が存在しないとレスポンスがなんなのかわからないんでしょう・・・たぶんw
ということで今回はGeneXus側の作成を行いました。
HTTP通信できる言語と環境さえあればHTTP通信を使って
GeneXus で作成したシステムと連携?ができるようになります。
結構簡単に作成できるので私は GeneXus のイイ所の一つだと思っています。
以上です。