REST通信して郵便番号から住所を取得するアプリを作る ~Delphiソースコード集
zipcloud様(https://zipcloud.ibsnet.co.jp/doc/api)の郵便番号検索APIを使わせていただいてREST通信を行います。
レスポンスのJSONをデコードする方法は https://mam-mam.net//delphi/vcl_rest_json.htm を参考にしてください。
zipcloud様の郵便番号検索API
https://zipcloud.ibsnet.co.jp/doc/api
を見ればわかるのですが、
- リクエストURL
- https://zipcloud.ibsnet.co.jp/api/search
- パラメータ
- zipcode=7桁の郵便番号
- メソッド
- GET
(例)https://zipcloud.ibsnet.co.jp/api/search?zipcode=0790177 で以下のレスポンス(JSONテキスト)が届きます。
{ "message":null, "results":[ { "address1":"北海道", "address2":"美唄市", "address2":"上美唄町協和", "kana1":"ホッカイドウ", "kana2":"ビバイシ", "kana3":"カミビバイチョウキョウワ", "prefcode":"1", "zipcode":"0790177" }, { 配列なので複数ヒットの場合は上記と同じ構造 }, ・・・配列の数だけ続く ], status: 200 }
画面設計
Delphi IDEを起動し、「ファイル」⇒「Windows VCLアプリケーション -Delphi」をクリックしてプロジェクトと初期フォームを作成します。
右下ペインにある「パレット」から以下コンポーネントをドラッグ&ドロップします。
- TMaskEdit ×1個
- TButton ×1個
- TMemo ×1個
- TRestClient ×1個
- TRestRequest ×1個
- TRestResponse ×1個
「MaskEdit1」をクリックして選択します。
左下ペインの「オブジェクトインスペクタ」の「プロパティ」タブをクリックして選択します。
「MaskEdit1」の[EditMask]プロパティを 000-0000;0;_ に設定します。
「RestClient1」をクリックして選択します。
「RestClient1」の[BaseURL]プロパティを https://zipcloud.ibsnet.co.jp に設定します。
「RestRequest1」をクリックして選択します。
「RestRequest1」の[Resource]プロパティを api に設定します。
「RestRequest1」の[ResourceSuffix]プロパティを search に設定します。
「RestRequest1」をクリックして選択します。
「RestRequest1」の[Params]プロパティの右にある[...]ボタンをクリックします。
左上の「新規追加」ボタンをクリックします。
[Name]プロパティを zipcode に設定します。
「RestRequest1.Paramsの編集」ウィンドウの右上の[×]ボタンをクリックして閉じます。
ソースコードの記述
「Button1」をダブルクリッククリックします。
コード入力画面に切り替わります。
以下のソースコードを記述します。
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, IPPeerClient, REST.Client, Data.Bind.Components, Data.Bind.ObjectScope, REST.Types; type TForm1 = class(TForm) MaskEdit1: TMaskEdit; Button1: TButton; Memo1: TMemo; RESTClient1: TRESTClient; RESTRequest1: TRESTRequest; RESTResponse1: TRESTResponse; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var st:String; begin RESTRequest1.Params[0].Value:=MaskEdit1.Text; RESTRequest1.Execute; //レスポンスのjsonのLFをCRLFに置換する st:=StringReplace(RESTResponse1.Content, #10, #13#10, [rfReplaceAll]); Memo1.Lines.Add(st); end; end.
実行する
IDEの実行ボタンをクリックして実行します。
ご参考:右下の「コード」「デザイン」タブをクリックして切り替えできます。
作成したアプリケーションがコンパイルされ、実行します。
「MaskEdit1」に郵便番号 079-0177 を入力して「Button1」をクリックすると住所のjsonが表示されます