AS3 URLStream 会切断响应的前 4 个字符



我有一个 URLStream 对象,它接受 XML 格式的响应,但不幸的是,响应的前 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

谢谢

这里有一个简单的解决方法:

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.
}

我可能错误地编码了swomewhere,请使用跟踪/调试来工作,但接近这一点的东西将解决问题。您应该在市长浏览器中检查它,以确保它在任何地方都能正常工作。

相关内容

  • 没有找到相关文章

最新更新