すごく簡単なことだけど、長い時間詰んでしまったので書く。
例えば、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時間も考えてしまったわーい
後は、宣言とかの上に空欄が空いてるとだめです。
ケアレスミスを無くそうね!