首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3 URLStream截断响应的前4个字符

AS3 URLStream截断响应的前4个字符
EN

Stack Overflow用户
提问于 2012-11-20 16:28:43
回答 1查看 236关注 0票数 0

我有一个URLStream对象,它接受XML格式的响应,但不幸的是,响应的前4个字符被截断了,这使得xml格式不正确。

如果我使用URLLoader对象,从服务器返回的xml的格式是正确的。

有人知道怎么解决这个问题吗?

代码语言:javascript
复制
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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-20 20:00:09

以下是一个简单的解决方法:

代码语言:javascript
复制
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编码错误,请使用traces/debug来工作,但是类似的东西就可以解决这个问题了。你应该在市长浏览器中检查它,以确保它在任何地方都能正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13469189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档