PHPとMySQLが使えるレンタルサーバーのデータを参照するプログラムを、DelphiでRestクライアントとして作成しす。サーバー側プログラムは、PHPで作成しています。
用意するコンポーネントは、
RESTClient1: TRESTClient;
RESTRequest1: TRESTRequest;
RESTResponse1: TRESTResponse;
HTTPBasicAuthenticator1: THTTPBasicAuthenticator;
の4種類です。
以下の解説でのサーバーアクセスURLは、下記とします。
https://www.thinksoft.co.jp/cgi-bin/PostListApi/ListPref.php*RESTClient1のパラメータ設定
Authenticator = HTTPBasicAuthenticator1
Accept = 'application/json, text/plain; q=0.9, text/html;q=0.8,'
AcceptCharset = 'utf-8, *;q=0.8'
BaseURL = '
https://www.thinksoft.co.jp/cgi-bin'Acceptと、AcceptCharsetの設定値は、RESTRequest1の同名プロパティからコピー。
Authenticatorの設定は、HTTP認証を使う場合、コンポーネントの追加とともに設定。
*HTTPBasicAuthenticator1のパラメータ設定
Username = ******************
Password = ************************
HTTP認証のUsername、Passwordを設定
*RESTRequest1のパラメータ設定
Resource := 'PostListApi';
ResourceSuffix := 'ListPref.php';
Client = RESTClient1
Params = <>
Response = RESTResponse1
(RESTClient1のBaseURL とRESTRequest1のResource、ResourceSuffixの設定については、HELP参照)
Paramsに、URLクエリパラメータを設定する。
Methodパラメータは、サーバー側をどちらでも対応できるように作ったので今回はデフォルトのままです。
後述する郵便番号検索のプログラムでは、下記のようにNAMEだけ設定。Kindはデフォルトのまま。

下記の"DelphiIDE上でテスト実行"する場合は、Valueも設定する。
プログラムで設定する場合は、
RESTRequest.Params.ParameterByName('POST_CODE').Value := '1234567';
のような感じで設定。
*RESTResponse1のパラメータ設定
ContentType='text/html'
*DelphiIDE上でテスト実行
この状態で、IDE上で実行可能となります。
URLクエリパラメータがある場合は、RESTRequest1のParamsに設定したパラメータのValueに値を設定します。ない場合は、必要ありません。
RESTClient1の上で、マウス右ボタンを押すと下記ポップアップメニューが出るので、実行を選ぶと実行されます。

応答データは、RESTResponse1のRESTResponse1に設定され、確認できます。
DelphiIDE上でテスト実行できることから、開発については、RESTRequestコンポーネントは、
*テストプログラム
弊社で使用しているサーバーに郵便番号データベースを作成し、複数パターンで郵便番号を検索できるRestクライアントプログラムを
ダウンロードできます。Exeのみでソースは含めていません。
Gridタブには、応答データをTFDMemTableにロード(ライブラリとして汎用的に作成しています)した結果を、RcvTextには、応答データをそのまま出力させています。
データ形式は、jsonを使うのが一般だと思いますが、特に他システムとの連携を考えていないのでCSV形式で行っています。(*1)
Request、Response、テーブル登録時間などが確認できるようになっています。
(*1)2022/1/16
Json形式でデータの受け取りを行うのがRestであり、CSV形式で行うのは、RestではないといわれたのでJson形式修正
ただし、ダウンロードできるプログラムは、CSVのままです。
posted by しんくそふと at 00:00|
Comment(0)
|
TrackBack(0)
|
開発TIPS