【发布时间】:2012-11-20 08:28:43
【问题描述】:
我有一个接受 XML 格式响应的 URLStream 对象,但不幸的是响应的前 4 个字符被截断,导致 xml 格式错误。
如果我使用 URLLoader 对象,则从服务器返回的 xml 格式正确。
有人知道如何解决这个问题吗?
private var _stream:URLStream;
_myVariables = new URLVariables();
_myVariables.email = _un;
_urlRqSend = new URLRequest(_loginURL);
var encoder:Base64Encoder = new Base64Encoder();
encoder.encode("password:"+_pw);
var credsHeader:URLRequestHeader = new URLRequestHeader("Authorization", "Basic " + encoder.toString());
_urlRqSend.requestHeaders.push(credsHeader);
_urlRqSend.data = _myVariables;
_urlRqSend.method = URLRequestMethod.POST;
_stream = new URLStream();
_stream.addEventListener(flash.events.Event.COMPLETE, handleResponse);
_stream.load(_urlRqSend);
private function handleResponse(ev:flash.events.Event):void{
trace("returned data: ",_stream.readUTFBytes(_stream.bytesAvailable));
}
输出
//返回数据:l version="1.0"...etc
正确的答案应该是
//返回数据:<?xml version="1.0"...etc
谢谢
【问题讨论】:
-
你能用 URLLoader 替换 URLStream 以及响应到达 trace(_urlLoader.data) 吗?
-
你应该先在没有编码器的情况下尝试一下,看看是否已经很好了..
-
猜测是服务器吐出的 UTF-8 开头有一个字节顺序标记 (BOM),这使 readUTFBytes 感到困惑。考虑到 Tamarin 直到今年 2 月才出现与 BOM 检测相关的错误,因此 FlashPlayer 的实现也可能存在问题。 bugzilla.mozilla.org/show_bug.cgi?id=723461
-
感谢大家的回复。是的,URLLoader 确实返回了格式正确的 XML。我想我要么必须使用它而不是 URLStream,要么实现 csomakk 提供的解决方法。
标签: xml actionscript-3 flash urlstream