ASP.NET 控制器:
// GET api/assets/5
public string Get(int id)
{
... <some DB init here>
string sResult = (string)oCmd.ExecuteScalar();
return sResult;
}
AS3 接收器:
private function btnLoad_Click():void
{
try
{
var urlRequest:URLRequest = new URLRequest("http://192.168.55.100/getimage/api/assets/1");
oUrlLoader = new URLLoader();
oUrlLoader.dataFormat = URLLoaderDataFormat.TEXT;
oUrlLoader.addEventListener(Event.COMPLETE, onXMLDataLoaded, false, 0, true);
oUrlLoader.load(urlRequest);
}
catch (ex:Error) {}
}
protected function onXMLDataLoaded(evt:Event):void {
try
{
var sData:String = oUrlLoader.data.toString();
editor.paste_fromserver( XML(sData));
}
catch (ex:Error) { trace(ex.message); }
}
现在我尝试将字符串解析为 XML,但我得到的只是错误:“错误 #1090:XML 解析器故障:元素格式错误。”
我发现当我在“Watch Expression”中观看 oUrlLoader.data 时,值就在那里,但是 sData = oUrlLoader.data = """" (空字符串?)。
还尝试了 oUrlLoader.data.toString() - 没有帮助,但是手表表达式发生了一些变化,没有 toString() 它在值的开头有两个“”符号,而 toString() 它只有一个“。
任何想法为什么设置了 Watch Expression 值中的 oUrlLoader.data,但代码中的相同 oUrlLoader.data 不返回任何字符串?
PS这实际上是字符串值(SVG图像),而不是二进制数据。我正在为 as3 使用 Flash Builder。
编辑:
呵呵,sData在Watch Expression中也有值。数据是:
"<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg version=\"1.2\" id=\"svg2\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><circle cx=\"284\" cy=\"310\" r=\"150\" id=\"untitled\" transform=\"matrix(1,0,0,1,-37,-22)\" style=\"opacity:1;stroke:#44F247;fill:#F087CA;fill-opacity:1;stroke-opacity:0.54;stroke-width:35.1;stroke-miterlimit:3;stroke-linecap:none;stroke-linejoin:round;\"/></svg>"
当我复制这些数据并将其直接粘贴到代码中时它可以工作,但是使用这个 urlLoader 它不起作用...... :(
编辑2:
来自构建器的屏幕截图(观察表达式有值,代码中的 sData,当鼠标悬停时 - 没有):http: //img9.imageshack.us/img9/7471/o7sa.png
还有... :] 这个字符串在源数据库中不包含任何制表符、新行或其他空格...