トップへ(mam-mam.net/)

REST通信して郵便番号から住所を取得するアプリを作る ~Delphiソースコード集

検索:

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」をクリックしてプロジェクトと初期フォームを作成します。
右下ペインにある「パレット」から以下コンポーネントをドラッグ&ドロップします。

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