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が表示されます
