現在表示しているページ
日々是作譜 » Web制作 » auのGPS取得の仕様はなんか変だ

auのGPS取得の仕様はなんか変だ

auでGPSデータの取得をしました。テスト機の機種はw51s。

GPSデータの取得とともに、別のデータも渡したかったので、formでデータを渡そうと、以下のようなコードを記述しました。

<form action="device:gpsone" method="GET">
<input type="hidden" name="url" value="gpsget.php">
<input type="hidden" name="ver" value="1">
<input type="hidden" name="unit" value="1">
<input type="hidden" name="datum" value="0">
<input type="hidden" name="data" value="hogehoge">
すると、auの端末自体がエラー003というものを吐き出しました。

auは技術情報を公開していないので、情報が少なくて、自力でいろいろとテストを行いました。
その結果、GETで渡すデータに余計なものをつけたり、たりなかったりするとエラーを吐き出すことが判明。

しかたなく、以下のように変更。

<form action="device:gpsone" method="GET">
<input type="hidden" name="url" value="gpsget.php?data=hogehoge">
<input type="hidden" name="ver" value="1">
<input type="hidden" name="unit" value="1">
<input type="hidden" name="datum" value="0">
これで、GPSの取得でエラーは出なくなりました。

しかし、新たな問題が発生。GPSのデータは次のページにGETクエリで渡すのですが、その際に以下のようなおかしな書式で返ってきてしまうのです。

?data=hogehoge?ver=1&unit=1&datum=0&.......(以下省略)
「?」が2つもある!?
どうも、この辺を自動的に変換してくれないようです。

GETクエリを以下の方法で、強引に手動分割するようにしました。

$query = str_replace("?", "&", $_SERVER['QUERY_STRING']);
preg_match_all("/&*([^=]+)=([^&]*)/",$query,$matches);
if(is_array($matches[1]))
{
    foreach($matches[1] as $key=>$value)
    {
        $query_array[$value] = $matches[2][$key];
    }
}
この症状はw51sだけのものなのかな?
技術情報を公開しないのは理解できるとしても、もう少し柔軟に対応できるシステムにして欲しいです。

« auの個体識別番号(EZ番号)取得
» TwitterPodでエラーが発生してデータ取得できない

Google AdSense

コメント

  1. 2008年09月26日 13:32 透明人間

    私も上記のように、やろうとした経験があります。

    device:gpsone?(PHPのURL)でGPS情報を取得した上で
    GET方式でform actionに渡したいデータを渡すと
    うまく動作するようです。

  2. 2008年10月02日 22:39 荒井宏之

    >透明人間さん
    コメントありがとうございます。
    仰る方法だと2ページになるってことですですよね?
    位置情報の取得と同時にコメントの書込みのように、1ページでやりたかったんです。
    どうやらそれは無理っぽいので諦めて、2ページでやることにしました。

コメント投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

トラックバック

このエントリーのトラックバックURL:
http://mt.hiroyukiarai.jp/mt-tb.cgi/27

検索

Google AdSense

カテゴリー

Blog Parts

あわせて読みたいブログパーツ
フィードメーター - 日々是作譜
track feed