|
CGIをC++Builderで作成しましたので、その時の経験から
尚、ここに書いてあるのは実体験をもとにしていますので、間違いなども含まれているかもしれません
作成開始
C++Builderではメニューより「新規作成」で表示される「Webサーバーアプリケーション」を選択する事でひな形を作成してくれます
作成形式として、「ISAPI/NSAPI DLL」「CGI実行形式」「Win-CGI実行形式」から選択できますが、ここでは「CGI実行形式」について取り上げます
「CGI実行形式」を選択すると、WebModuleが作成されます
追加
「プロパティ」の「Action」を選択すると、「コレクションエディタダイアログボックス」が表示されます
このダイアログでCGIのアクションを定義します
「追加」をクリックすると、新しいコレクションが作成されます
プロパティの設定
新規に作成したコレクションのプロパティを設定します
新規に作成するCGIに単一の機能を持たせるのであれば、「Default」プロパティを「True」としておくとよいでしょう。このCGIが呼ばれた時に、これから作成する内容が処理される事になります
他、「MethodType」では、HTTP 要求メッセージの型を指定できます
これも、「mtAny」を選択しておくと、特に意識する必要はありません(かなり、いい加減ですが、飽く迄も簡単な作り方の説明という事で...)
処理の作成
今、作成したコレクションのイベント「OnAction」中に処理を書きます
void __fastcall TWebModule1::WebModule1WebActionItem1Action(
TObject *Sender, TWebRequest *Request, TWebResponse *Response,
bool &Handled)
{
特に名前を変更していないと、上記のような関数になります
これまた見慣れないものが引数に使われています
「TWebRequest」と「TWebResponse」
この二つのクラスを使うと、CGIへの引数の受け渡し及び、HTTP応答メッセージの作成が比較的容易に出来ます
「TWebRequest」はCGIへ渡される値、「TWebResponse」は応答メッセージの値を格納していると思って下さい
この、
「TWebRequest->QueryFields->Values[名前]」
によって、「Name=Value」形式で与えられているCGI引数のValueを取得する事が出来ます
また、
「TWebResponse->Content」
に文字列を格納する事で、CGIの返す値を設定する事が出来ます
他にも、「TWebResponse->ContentType」を変更する事で、HTTP応答メッセージの種別を変更できるなど、難しい事を考えなくてもCGIの作成が可能となっています
特に難しいものでなければ、取敢えずは引数の値を取得してその結果を返す程度であれば、作成出来ると思います
|