2018年6月2日土曜日

【Java】郵便番号から住所を取得する

java言語を使って、郵便番号から住所を取得する方法を調べてみた。

WebAPIを利用する

郵便番号をインプットに、住所を取得できるWebAPIが公開されていたので利用する。
WebAPIの特徴は以下
利点コード量が少なくて済む
欠点 サービスが終わったら使えない(いつ終わるのかも不明)
オフライン環境では使えない
利用規約がよくわからないものが多い(これは自分の理解力のせい...)

住所取得APIはググったらたくさん出てきたけど、今回はAPIキーを必要としない、
株式会社アイビスが提供しているWebAPIを利用してみる。

https://zipcloud.ibsnet.co.jp/doc/api

上記URLにも記載の取り、ちゃんと利用規約を読んで利用してね。

サンプルコード

ソースコードをまるまる書いちゃうと、利用規約の「2. 禁止事項」の2項に引っかかるのかな?
と思ったので、ちょっと伏せて記載。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;

public class Main  {
  public static void main(String[] args) throws IOException {
    
    // 郵便番号入力
    String zipcode = "783-0060";// 高知県南国市蛍が丘
    
    
    // URL作って接続
    String urlString = "XXXXXXXXXXXXX"+ "?zipcode=" + zipcode;
    java.net.URL url = new java.net.URL(urlString);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.connect();

    // JSONデータの読み込み
    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String tmp;
    while ((tmp = in.readLine()) != null) {
      System.out.println(tmp);
    }

    // 終了処理
    in.close();
    con.disconnect();
  }
}
「URLを作って接続」の部分の"XXXXXXXXXXXXX"は、郵便番号検索APIの「リクエストURL」の項目に記載されているRULを書いたら使えるようになる。 
zipcodeに郵便番号をString型で入力。このとき「-」の有無はどっちでもいい。
結果はJSONで得られるので、JSONObjectクラスで簡単にパースできる
けど、今回は取得データの全文を文字列出力の手抜きコードで....

0 件のコメント:

コメントを投稿