記事を更新するあたりのプログラムで,保存ボタンを押すとError #2044: Unhandled ioError:. text=Error #2032: Stream Errorといったエラーが出てしまいました。
ioErrorなのでファイルのオープンとかに失敗した場合に出るっぽい。
今回これが出た場所はURLLoaderを使ってリクエストを送ろうとしたとき。
var request:URLRequest = new URLRequest(); request.method = 'PUT'; request.url = "http://192.168.2.104:3000/stickies/"+sticky.id+".xml"; var variables:URLVariables = new URLVariables(); variables['sticky[x]'] = sticky.window.x / Capabilities.screenResolutionX; variables['sticky[y]'] = sticky.window.y / Capabilities.screenResolutionY; variables['sticky[width]'] = sticky.window.width; variables['sticky[height]'] = sticky.window.height; variables['sticky[body]'] = sticky.editor.text; request.data = variables;*/ request.data = data; var loader:URLLoader = new URLLoader(); loader.load(request); // ここ
HTTPのステータスコードを取得してみます.HTTPStatusEventのイベントリスナーを追加します.
public function load():void { ... loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpSt); } public function httpSt(evt:HTTPStatusEvent):void { message.text += "ERROR:" + evt.toString(); }
エラーの詳細は割愛しますが、大きく2つの原因があったようです。
- Content-Typeの未指定
これは読み込みとか、通常のリクエストでは問題なかったのですがload()メソッドではPUTで、〜.xmlに書き込みを行っています。
このためリクエスト情報保持しているURLRequestオブジェクトのcontentTypeプロパティに「text/xml」の指定が必要になるようです。
var request:URLRequest = new URLRequest(); request.method = 'PUT'; request.url = "http://192.168.2.104:3000/stickies/"+sticky.id+".xml";
- 値の設定方法
今回行いたいのは言うまでもなくXMLデータの送信。
チュートリアルでは,URLVariablesを使っていますがこれが良くなかったらしい.
URLVariables - Adobe ActionScript® 3 (AS3 ) API Reference
URLVariablesの使いどころはまだちょっとわかりませんが、XMLデータで送りなさいってことになるらしい。
ってことで、XMLクラスのオブジェクトを作ってセットします。
XML - Adobe ActionScript® 3 (AS3 ) API Reference
var data:XML = new XML("<sticky></sticky>"); var body:XML = new XML("<body></body>"); body.appendChild(sticky.editor.text); data.appendChild(body); var height:XML = new XML("<height></height>"); height.appendChild(sticky.window.height); data.appendChild(height); var width:XML = new XML("<width></width>"); width.appendChild(sticky.window.width); data.appendChild(width); var x:XML = new XML("<x></x>"); x.appendChild(sticky.window.x / Capabilities.screenResolutionX); data.appendChild(x); var y:XML = new XML("<y></y>"); y.appendChild(sticky.window.y / Capabilities.screenResolutionY); data.appendChild(y);
XMLクラスの使い方等参考にしました.(というか丸写し)
RoRとFlex(XMLデータの取り扱い): はやまらむてならひ

- 作者: Colin Moock,永井勝則
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/11/22
- メディア: 大型本
- 購入: 6人 クリック: 139回
- この商品を含むブログ (28件) を見る