Flex WebService POST将https更改为http

时间:2013-04-04 18:41:23

标签: web-services flex https wsdl crossdomain.xml

我有一个需要连接到https网络服务的Flex应用。 Web服务WSDL URL以wsdl-url.company.com的形式给出,其中使用了SSL卸载。

Flex应用程序驻留在Web服务所在的同一服务器上。

mxml中定义的Web服务为

<s:WebService id="webService" wsdl="https://wsdl-url.company.com/service.asmx?wsdl">

服务器根目录下的crossdomain.xml文件是

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM /xml/dtds/cross-domain-policy.dtd> 
<cross-domain-policy> 
<site-control permitted-cross-domain-policies="all"/> 
<allow-access-from domain="*" to-ports="*" /> 
<allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy>

如果swf是从HTTPS地址加载的,当页面加载时,swf将不会请求crossdomain.xml(Web服务初始化),但是当调用Web服务时,会尝试POST到http等效项而不是https

即。使用Firebug,我看到Flex正在执行POST,应该是HTTPS。为什么Flex在声明为https时将其更改为http?

另一方面,如果在同一服务器上从HTTP加载swf,则会下载crossdomain.xml,但Flash调试器会抛出“Channel.Security.Error”,当Web服务尝试时应用程序崩溃初始化。

非常感谢您解决此问题的任何帮助。

1 个答案:

答案 0 :(得分:1)

找到解决方案

对于任何遇到相同问题的人来说,问题出在项目的.fml内的WSDL端点上。即使我在WebService声明中将服务设置为https://,默认情况下Flash Builder也会将WSDL端点生成为http。 在加载应用程序时以编程方式将端点正确设置为https可以解决问题:

webService.endpointURI = "https://wsdl-url.company.com/service.asmx";