在Nexus平板电脑上使用HTTPS时,Adobe AIR移动应用程序失败,但适用于Kindle

时间:2013-02-20 00:20:10

标签: flex mobile air flex4.5

好的,烧了4个小时,所以我转向SO希望得到帮助。

以下是事实,因此您可以快速了解:

  • 我们的笔记本电脑上运行的AIR Mobile应用程序运行良好,我们在HTTP模式下测试的每台Android设备(Kindle,Nexus,Asus A100)

  • 只要我们切换到HTTPS,笔记本电脑和Kindle设备就会连接到服务器

  • 在其他设备上,我收到一个FaultEvent,错误显示:“Send Failed.Channel.Connect.Failed error NetConnection.Call.Failed https://www.example.com/flex2gateway/cfamfsecure/

    < / LI>
  • 我可以在浏览器中点击Nexus / A100上面的网址,并按预期返回空白页面

  • 使用此相同连接的基于Flex的应用程序已经多年没有问题了 - 这是第一个使用该HTTPS连接的AIR应用程序

  • 我正在使用Captive Runtime功能

  • ColdFusion 9后端

  • 我无法调试网络流量,因为它只发生在平板电脑上,我目前不知道如何在平板电脑上捕获流量,就像我可以在我的笔记本电脑上使用Fidder(现在研究)< / p>

我会尽快提供您需要的任何其他信息 - 请告诉我。

除了上述内容之外,我还查看了一些其他内容:确保crossdomain.xml文件存在且设置正确,更改CF的services-config.xml文件中的设置等。

我目前的想法是,它可能与SSL证书中的链接有关 - 就像根CA在Nexus或其他东西上不受信任? (这是GlobalSign Root CA)或者它与默认浏览器有关,就像在Flex天和IE /代理中一样?

之前从未见过,所以我会接受任何帮助。

[更新]:我创建了一个可用于复制此问题的小样本:https://www.dropbox.com/s/5nmilo3tbwr2k8d/HTTPTestSource.zip

它将包含您需要的一切:源代码,编译.AIR(用于桌面),编译.APK(用于Android设备)。桌面在HTTP和HTTPS中工作正常,而移动APK仅适用于HTTP。如果你愿意的话,我还提供了一个样本CFC,可以放在你自己的服务器上。

感谢您阅读此内容!

3 个答案:

答案 0 :(得分:4)

<强> [解决]

嗯,我让它适合我的情况 - 希望这有助于其他人。

问题是AIR Captive Runtime。使用HTTPS时似乎不起作用。我不得不切换到它,因为我的第一个开发硬件是Kindle Fire,而且AIR Runtime预先安装在Kindle Fire上,但我需要最新版本的AIR。所以,我只是打开俘虏运行时间,继续我的快乐方式。

当我们上线时,我们将端点更改为我们的HTTPS服务器,而Kindles继续工作,其他所有平板电脑都失败了。

为了解决这个问题,我关闭了Captive Runtime并重新编译,现在取消/重新安装后,它可以在我的所有平板电脑上运行, 除了 Kindle Fire,我就是我只需要提供不同的安装。

希望这有助于其他人遇到同样的问题。

答案 1 :(得分:1)

PRB,

我将通过说我不会塑造或形成一个灵活的开发人员来作为序言。我最近研究了一个我们在这里工作的crossdomain.xml问题时遇到了这些信息。我在adobe网站上发现了一个页面,指出当调用flex应用程序不在HTTPS连接后面时,在HTTPS连接后调用Web服务时会出现问题。

您必须向allow-access-from标记添加secure =“false”属性。

<cross-domain-policy>
    <allow-access-from domain="*.mydomain.com" secure="false"/>
</cross-domain-policy>

我是从http://livedocs.adobe.com/flex/3/html/help.html?content=security2_15.html得到的。

评论部分中还有一些其他细节可能也会有所帮助。您可以通过HTTPS调用WSDL,但如果WSDL中的位置字段具有HTTP://而不是HTTPS://则所有剩余的调用都将通过HTTP而不是HTTPS。

-

另一方面,似乎flash播放器和flex使用浏览器的http机制进行传输,而AIR直接实现它,这可以解释为什么你的flex应用程序失败并且Air应用程序正在运行。这也可能是它在调试中工作的原因(使用开发环境http传输)和发布(切换到主机浏览器http传输)。

蒂姆萨普

答案 2 :(得分:1)

感谢您对问题的更新。它当然帮助我找到问题的解决方案。我从Apache Flex安装了AIR 3.7以及Flex 4.10构建,并且能够成功连接到https连接(在Flash构建器中导出发布版本后使用Captive运行时)。所以遇到这个问题的任何人都应该使用一个较新的AIR SDK,它应该解决它。