0

我有一个需要连接到 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 地址加载的,则当页面加载(Web 服务初始化)时,swf 不会请求 crossdomain.xml,但是当调用 Web 服务时,会尝试对 http 等效而不是 https。

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

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

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

4

1 回答 1

1

找到解决方案

对于任何有相同问题的人,问题出在项目的 .fml 中的 WSDL 端点。尽管我在 WebService 声明中将服务设置为 https://,但 Flash Builder 默认将 WSDL-endpoint 生成为 http。在加载应用程序时以编程方式将端点正确设置为 https 就可以了:

webService.endpointURI = "https://wsdl-url.company.com/service.asmx";
于 2013-04-05T14:27:34.407 回答