; ; zipcloud(郵便番号データ配信サービス)を使って、 ; 郵便番号から住所文字列を取得するサンプル […]
; ; zipcloud(郵便番号データ配信サービス)を使って、 ; 郵便番号から住所文字列を取得するサンプル […]
;
; zipcloud(郵便番号データ配信サービス)を使って、
; 郵便番号から住所文字列を取得するサンプル
;
#include "hspinet.as"
#include "encode.as"
#include "hspinet.as"
netinit
if stat : dialog "ネット接続できません。" : end
; リクエストURL
neturl "http://zipcloud.ibsnet.co.jp/api/"
; リクエストパラメータ
; GET形式でCGIにパラメーターを渡す
; zipcode 郵便番号(必須パラメータ)
; callback コールバック関数名
; limit 最大件数
yubin = "100-0013" ; 東京都千代田区霞が関
; yubin = "0790177" ; 北海道美唄市上美唄町 協和/南
netrequest_get "search?zipcode=" + yubin
mes "DOWNLOAD 開始"
*main
; 結果待ちのためのループ
netexec res
if res > 0 : goto *comp
if res < 0 : goto *bad
await 50
goto *main
*bad
; エラー
neterror estr
mes "ERROR "+estr
stop
*comp
; 完了
mes "DOWNLOAD 完了"
netgetv buf
; UTF8 -> Shift-JIS
buf_sjis = utf8n2sjis( buf )
; LF -> CL+LF
; JSON構文解析には不要だけど、表示に必要な処理
CL = ""
LF = ""
poke CL, 0, $0D
poke LF, 0, $0A
strrep buf_sjis, LF, CL+LF
mesbox buf_sjis,640,200,1
; JSON構文解析
; レスポンスフィールド
; status ステータス 正常時は 200、エラー発生時にはエラーコードが返される。
; message メッセージ エラー発生時に、エラーの内容が返される。
; results --- 検索結果が複数存在する場合は、以下の項目が配列として返される ---
; zipcode 郵便番号 7桁の郵便番号。ハイフンなし。
; prefcode 都道府県コード JIS X 0401 に定められた2桁の都道府県コード。
; address1 都道府県名
; address2 市区町村名
; address3 町域名
; kana1 都道府県名カナ
; kana2 市区町村名カナ
; kana3 町域名カナ
;
; エラー
; 400 入力パラメータエラー
; 500 API内部で発生したエラー
jsonopen ptJson, buf_sjis
jsongetobj ptJson_results, "results", ptJson
; address
jsonnext ptJson_results_c, ptJson_results, 2
while( ptJson_results_c != 0 )
jsongets ad1 ,"address1", ptJson_results_c
jsongets ad2 ,"address2", ptJson_results_c
jsongets ad3 ,"address3", ptJson_results_c
mes "" + ad1 + ad2 + ad3
jsonnext ptJson_results_c, ptJson_results_c, 0
wend
; status
jsongeti st, "status", ptJson
; mes "(" + stat + ") " + st
if st = 200 : mes "ステータス:正常"
if st = 400 : mes "ステータス:入力パラメータエラー"
if st = 500 : mes "ステータス:API内部で発生したエラー"
jsonclose
stop