Ok, 4 hours burned, so I'm turning to SO in hope for help.
Here are the facts so you can understand quick:
We have an existing AIR Mobile app that runs fine on my laptop, and every Android device we've tested while in HTTP mode (Kindle, Nexus, Asus A100)
As soon as we switched to HTTPS, only the laptop and Kindle devices will connect to the server
On the other devices, I'm getting a FaultEvent returned, and the error says: "Send Failed. Channel.Connect.Failed error NetConnection.Call.Failed https://www.example.com/flex2gateway/cfamfsecure/"
I can hit the URL above on the Nexus/A100 in a browser and it returns a blank page just as expected
Flex-based apps using this same connection have been fine for years without problem - this is the first AIR app to use that HTTPS connection however
I'm using the Captive Runtime feature
ColdFusion 9 backend
I can't debug the web traffic because it only happens on the tablet, and I currently don't know how to capture traffic on a tablet, like I can on my laptop with Fidder (researching now)
I will provide any other info you need, and as quickly as possible - just let me know.
Other than the above, I've also looked at a few other things like: Ensure that the crossdomain.xml file exists and is setup properly, change the setting in CF's services-config.xml file, etc.
My current thought is that maybe it has something to do with chaining in the SSL Cert - like maybe the Root CA isn't trusted on the Nexus or something? (Which is GlobalSign Root CA) Or it has something to do with the default browser like in the Flex days and IE/proxies?
Never seen this before, so I'll take whatever help I can get.
[UPDATED]: I have created a small sample you can use to replicate this issue: https://www.dropbox.com/s/5nmilo3tbwr2k8d/HTTPTestSource.zip
It will contain everything you need: source, compiled .AIR (for desktop), compiled .APK (for android device). The Desktop works fine in HTTP and HTTPS, whereas the mobile APK only works for HTTP. I've also included a sample CFC to put on your own server if you want.
Thanks for reading this far!
[RESOLVED]
Well, I got it working for my situation - hope this helps for others.
The problem is the AIR Captive Runtime. It doesn't seem to work when using HTTPS. I had to switch to it because my first development hardware was a Kindle Fire, and the AIR Runtime is pre-installed on the Kindle Fire, but I needed the most recent version of AIR. So, I just turned on the Captive Runtime and went on my merry way.
When we went live, we changed the endpoint to our HTTPS server and the Kindles continued to work, where all other tablets failed.
To fix this, I turned OFF Captive Runtime and recompiled, and now after un/reinstalling it works on all my tablets, except the Kindle Fire, which I'll just have to provide a different install for.
Hopefully this helps others out there having the same problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With