【问题标题】:AS3 URLStream cuts off first 4 characters of responseAS3 URLStream 切断响应的前 4 个字符
【发布时间】: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


【解决方案1】:

这是一个简单的解决方法:

var xml:String = _stream.readUTFBytes(_stream.bytesAvailable)
if(xml.search("<?xml version="1.0" != 0)){ //you may have to mix the "-s to compile.
  var start:int=xml.search("?>") + 3 //this will give you the character of the first element after the xml declaration (like <root> ...)  
  xml =  '<?xml version="1.0"...etc' + xml.Splice(start); //splice will return <root> ..., and we'll add the declaration before it.
}

我可能在某个地方出现错误编码,请使用跟踪/调试来工作,但接近此的方法可以解决问题。你应该在市长浏览器中检查它,以确保它在任何地方都可以正常工作。

【讨论】:

    猜你喜欢
    • 2016-06-29
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    相关资源
    最近更新 更多