すごく簡単なことだけど、長い時間詰んでしまったので書く。
例えば、Twitterで検索をする場合、
http://search.twitter.com/search.atom?q=文字列
を送信すると、qにセットされた文字列が検索されて、XML(atom)で返ってくる。
そこで実際にクライアントがサーバーにデータを送り、サーバーがXMLで返し、クライアントで受信するという仕組みを作ってみようとした。
クライアントが cmd=search&q= をサーバーへ投げると、その処理結果がXMLで返ってくるというものだ。
<?php echo <?xml version="1.0" encoding="UTF-8"?>'; echo "<return>"; if($_GET['cmd'] == "search"&&isset($_GET['q'])) { //処理 echo "<res>結果</res>"; } echo "</return>"; ?>
結果: 失敗。
ブラウザで開いてみると上手く動かない!
足りないのは、XMLのヘッダ宣言だった。つまり先頭に書いて、
<?php header("Content-Type: application/xml; charset=UTF-8"); echo <?xml version="1.0" encoding="UTF-8"?>'; echo "<return>"; if($_GET['cmd'] == "search"&&isset($_GET['q'])) { //処理 echo "<res>結果</res>"; } echo "</return>"; ?> ?>
とすれば良いだけだった。こんなミスに気が付かなくて12時間も考えてしまったわーい
後は、宣言とかの上に空欄が空いてるとだめです。
ケアレスミスを無くそうね!