我正在使用远程服务器上的php文件制作一个非常简单的httpservice请求:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:halo="library://ns.adobe.com/flex/halo"
>
<fx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
private function check(evt:ResultEvent):void
{
if(service.lastResult.output == "yes")
{
test.text = "successful";
}
}
]]>
</fx:Script>
<fx:Declarations>
<mx:HTTPService id="service" result="check(event)" showBusyCursor="true" method="POST" url="http://www.example.com/php.php" useProxy="false">
</mx:HTTPService>
</fx:Declarations>
<mx:VBox width="100%" height="100%">
<mx:Button x="10" y="122" label="Submit" id="Submit" click="service.send();"/>
<mx:TextArea id="test" width="50%" height="50%" />
</mx:VBox>
</s:Application>
当我在远程服务器上运行生成的flash文件时,它100%工作,test.text被填充为“成功”。
但是,当我在localhost上运行时,test.text仍为空白。如果我在Flex中检查我的网络监视器,httpservice是成功的,所以crossdomain.xml似乎设置正确...我做错了什么?我一直在旋转我的轮子一段时间没有线索。 THX!
答案 0 :(得分:0)
您的服务器的crossdomain.xml文件可能不允许这样做,或者您可能没有。\ / p>
当Flash播放器查找从SWF本身以外的其他域提供的某些远程资料时,它会在域根目录中检查名为crossdomain.xml的文件,以确保服务器正常。
你可能想在这里放一些只允许一切的东西,直到你完成本地开发......
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="SOAPAction"/>
</cross-domain-policy>