GNOME Seed から Web API を使う
Web API を使うには、XMLHttpRequest オブジェクトを使うのが一般的らしいのだが、GNOME Seed はブラウザが無いため利用できない。webkit を使う方法もあるとは思うが、GNOME で一般的に利用される libsoup を使ってみた。
Web API もよくわからないので、
http://www.atmarkit.co.jp/fnetwork/rensai/5minapi/01.html
のサンプルで使っている、
http://zip.cgis.biz/
を利用する。
郵便番号 100-0001 を検索するソースは以下のとおり
#! /usr/bin/env seed const Soup = imports.gi.Soup; var session = new Soup.SessionSync(); var request = new Soup.Message.c_new("GET", "http://zip.cgis.biz/xml/zip.php?zn=1000001"); var status = session.send_message(request); var data = request.response_body.data; print(data);
Soup オプジェクトを利用して、同期の SoupSession を作成し、GET で URI を送るだけ。受け取ったデータはXML形式なので、libxml を使えば良いと思う。
しかし、手元では文字化けしている。
$ ./zip.js <?xml version="1.0" encoding="utf-8" ?> <ZIP_result> <result name="ZipSearchXML" /> <result version="1.01" /> <result request_url="http%3A%2F%2Fzip.cgis.biz%2Fxml%2Fzip.php%3Fzn%3D1000001" /> <result request_zip_num="1000001" /> <result request_zip_version="none" /> <result result_code="1" /> <result result_zip_num="1000001" /> <result result_zip_version="0" /> <result result_values_count="1" /> <ADDRESS_value> <value state_kana="??????" /> <value city_kana="?????" /> <value address_kana="????" /> <value company_kana="none" /> <value state="???" /> <value city="????" /> <value address="???" /> <value company="none" /> </ADDRESS_value> </ZIP_result>
もう少し細工が必要そうだ。