2013-02-20 18 views
5

Ok, spalone 4 godziny, więc zwracam się do SO z nadzieją na pomoc.Aplikacja mobilna Adobe AIR nie działa przy korzystaniu z HTTPS na tablecie Nexus, ale działa na Kindle

Oto fakty, dzięki czemu można szybko zrozumieć:

  • Mamy istniejącej aplikacji AIR komórkowy, który działa dobrze na moim laptopie, a każde urządzenie z Androidem mamy przetestowane w trybie HTTP (Kindle, Nexus, Asus A100)

  • jak tylko włączony do protokołu HTTPS, tylko laptop i urządzenia Kindle będzie łączyć się z serwerem

  • na innych urządzeniach, jestem gett po błędzie FaultEvent, a błąd mówi: "Wysyłanie nie powiodło się. Channel.Connect.Failed błąd NetConnection.Call.Failed https://www.example.com/flex2gateway/cfamfsecure/ "

  • mogę trafić URL powyżej na Nexus/A100 w przeglądarce i zwraca pustą stronę tak oczekiwany

  • aplikacje Flex opartych przy użyciu tego samego połączenia zostały dobrze przez wiele lat bez problemu - jest to pierwsza aplikacja AIR używać tego połączenia HTTPS jednak

  • używam funkcji Captive Runtime

  • ColdFusion 9 backend

  • Nie mogę debugować ruchu w sieci, ponieważ dzieje się tak tylko na tablecie, a obecnie nie wiem, jak przechwytywać ruch na tablecie, tak jak mogę na moim laptopie z Fidderem (teraz szukając)

Podam wszelkie inne informacje, których potrzebujesz, i tak szybko, jak to możliwe - daj mi znać.

Inne niż wymienione powyżej, ja również spojrzał na kilka innych rzeczy, takich jak: Sprawdź, czy plik istnieje i jest crossdomain.xml setup prawidłowo, należy zmienić ustawienie w pliku services-config.xml Cf itp

Moją obecną myślą jest to, że może ma to coś wspólnego z łańcuchem w certyfikacie SSL - jak może główny urząd certyfikacji nie jest zaufany na Nexusie czy coś takiego? (Co to jest GlobalSign Root CA) Czy ma to coś wspólnego z domyślną przeglądarką, jak w dniach Flex i IE/proxy?

Nigdy wcześniej tego nie widziałem, więc podejmę każdą pomoc, jaką mogę uzyskać.

[AKTUALIZACJA]: Stworzyłem małą próbkę można wykorzystać do replikowania ten problem: https://www.dropbox.com/s/5nmilo3tbwr2k8d/HTTPTestSource.zip

będzie on zawierał wszystko, czego potrzeba: Source, skompilowanej .air (na pulpicie), skompilowany apk (dla Androida urządzenie). Pulpit działa dobrze w protokołach HTTP i HTTPS, natomiast mobilny pakiet APK działa tylko w protokole HTTP. Dodałem także przykładową CFC, aby umieścić na własnym serwerze, jeśli chcesz.

Dzięki za przeczytanie tej strony!

+1

Czy "adb logcat" drukuje coś? –

+0

Sprawdzę i skontaktuję się z tobą później, dziś, Aleksander - w drodze! Przy okazji, próbowałem wyeksportować certyfikaty z tej witryny, a następnie zaimportować je do tabletu i napisano, że zaimportowały dobrze, ale nadal nie działały. – PRB

+0

A kiedy wyłączyłem HTTPS, wszystkie tablety mogły się połączyć dobrze (ale potrzebuję SSL) :) Myślę, że jestem coraz bliżej. – PRB

Odpowiedz

4

[ROZWIĄZANY]

Cóż, mam go pracujących dla mojej sytuacji - mam nadzieję, że to pomaga innym.

Problem dotyczy środowiska wykonawczego AIR Captive. Wygląda na to, że nie działa przy korzystaniu z HTTPS. Musiałem się do niego przestawić, ponieważ moim pierwszym sprzętem rozwojowym był Kindle Fire, a środowisko AIR Runtime zostało wstępnie zainstalowane w Kindle Fire, ale potrzebowałem najnowszej wersji AIR. Więc po prostu włączyłem Captive Runtime i poszedłem na moją wesołą drogę.

Po uruchomieniu zmieniliśmy punkt końcowy na nasz serwer HTTPS, a Kindles nadal działał, a wszystkie inne tablety zawiodły.

Aby rozwiązać ten problem, wyłączyłem Captive Runtime i rekompilacji, a teraz po un/reinstalacja to działa na wszystkich moich tabletek, wyjątkiem Kindle Fire, który będę musiał dostarczyć inny zainstalować na .

Mam nadzieję, że pomaga to innym osobom mającym ten sam problem.

+0

+1, chociaż to brzmi jak błąd w kodzie Captive Runtime. Którą wersję AIR używałeś? – JeffryHouser

+1

Przepraszamy, SO nie pozwolił mi wpisywać komentarzy Nagle, ale dzisiaj znowu mogę Ok, używałem tego, co przyszło z Flex 4.6 pierwotnie, co, jak sądzę, było 3.1, jeśli dobrze pamiętam, teraz połączyłem się w AIR 3.5 i zobaczę, czy to coś zmieni. Nie mogłem uzyskać wersji 3.6, która mogłaby się scalić i nadal kompilować. – PRB

+0

Dla przyszłych czytelników, zobacz także odpowiedź @Gareth Arch poniżej, przy użyciu nowszych wersji AIR z Flexem również to naprawi. – Brian

1

PRB,

będę przedmowa to mówiąc, że jestem w żaden sposób kształt lub formę flex developer. Natknąłem się na te informacje, ponieważ niedawno szukałem problemu crossdomain.xml, który mieliśmy tutaj w pracy.Znalazłem stronę na stronie firmy Adobe, która twierdzi, że występuje problem podczas wywoływania usługi sieci Web za połączeniem HTTPS, gdy aplikacja wywołująca Flex nie jest również powiązana z połączeniem HTTPS.

Musisz dodać atrybut secure = "false" do znacznika allow-access-from.

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

Mam to od http://livedocs.adobe.com/flex/3/html/help.html?content=security2_15.html.

Istnieje kilka dodatkowych informacji w sekcji komentarzy, które mogą również pomóc. Możesz wywołać WSDL przez HTTPS, ale jeśli pola lokalizacji w WSDL mają HTTP: //, a nie HTTPS: //, wszystkie pozostałe połączenia będą za pośrednictwem HTTP, a nie HTTPS.

-

Na marginesie, wydaje się, że odtwarzacz Flash i Flex użyciu mechanizmu HTTP przeglądarki transportu, podczas AIR realizuje go bezpośrednio, co mogłoby wyjaśnić, dlaczego aplikacja Flex zawodzi i aplikację Air działa. Może to być również problem, dlaczego działa w debugowaniu (przy użyciu środowiska programistycznego http transport) i wydania (przełączanie na http transportu hosta przeglądarki).

Tim Sapp

+0

Dzięki Tim! Z tego co rozumiem/pamiętam, plik crossdomain.xml nie ma zastosowania do aplikacji AIR, ponieważ nie są one "w domenie". – PRB

+0

Przepraszam, naciśnij Enter i komentarz wysłany. Chciałem powiedzieć, że w powyższym przykładzie: tak naprawdę nie jest to "domena" ... ale spróbowałem również z "*", bezskutecznie. :(Dziękuję za twoją pomoc - wszelkie pomysły pomogą !!! – PRB

1

Dziękujemy za aktualizację pytania. To z pewnością pomogło mi znaleźć rozwiązanie tego problemu. Zainstalowałem środowisko AIR 3.7 wraz z wersją Flex 4.10 z Apache Flex i udało mi się połączyć z połączeniem https (przy użyciu środowiska wykonawczego Captive po wyeksportowaniu kompilacji wydania w programie Flash Builder). Tak więc każdy, kto ma taki problem, powinien użyć jednego z nowszych zestawów SDK środowiska AIR i powinien go rozwiązać.