URLLoader.dataに入る戻り値についてのメモ
サーバとのやり取り等でよく使う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;
としてテキストで受けることで回避しました。
サーバからのレスポンスは正しいのになんか挙動がおかしい!という時はご注意ください。