サーバとのやり取り等でよく使うURLLoaderですが、一箇所引っ掛かったのでメモ。

URLRequest.dataをURLVariablesでデータ送信する場合、URLLoader.dataFormatにURLLoaderDataFormat.VARIABLESを設定してloadします。
通信が成功すると、URLLoader.dataに通信先からの戻り値が入るわけですが、

<node><![CDATA[http://www.hoge.com/hoge.php?id1=00000&id2=00000]]></node>

という感じのノードを含むレスポンスを受けた時、"&"の位置で文字列が途切れてしまうということがありました。

この原因がいまひとつ分かっていないのですが、恐らくここにもある通り、dataFormatがVARIABLESの時、戻り値がURLエンコード形式の変数として認識されるので、"&"がエスケープされずに変な動作を起こしたとかなのではないかと思います。上のコードでも表示上は"&"の右に謎のセミコロンが出現していますし。

判明しました。こちらの記事で解説しています。

今回はXMLがパースできればよかったので、load直後にdataFormatをTEXTにして

_urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
_urlLoader.load( req );
_urlLoader.dataFormat = URLLoaderDataFormat.TEXT;

としてテキストで受けることで回避しました。

サーバからのレスポンスは正しいのになんか挙動がおかしい!という時はご注意ください。

HTML5飯