Ошибка HTTP-запроса Flex Mobile в файле apk

Я разрабатываю приложение для Android, используя Flex Builder 4.6. Это довольно сложное приложение, и я использую HTTPService для связи с сервером. Он работал нормально до недавнего времени перестал работать после создания файла apk. Таким образом, из настольного симулятора в режиме отладки на мобильном устройстве HTTTPService работает нормально, но когда я делаю сборку выпуска и устанавливаю ее на мобильном устройстве, она просто не работает.

Я пытался отследить ошибку, она просто показывает «Ошибка запроса HTTP». Например, вот код mxml, который я использую

<s:HTTPService id="sayHi" method="GET" result="sayHi_resultHandler(event)" fault="sayHi_faultHandler(event)"
                   url="https://zaawi.co.uk/developer/controller.php" useProxy="false">
        <s:request xmlns="">
            <h>sayHi</h>
        </s:request>
    </s:HTTPService>

Я проверил URL-адрес https://zaawi.co.uk/developer/controller.php?h=sayHi в браузере, который отлично работает, а также в режиме симулятора и отладки.

Сервер (php) отправляет ответ в формате xml

print '<?xml version="1.0" encoding="UTF-8"?><data><hi>hello world</hi></data>';

Почти год все работало нормально, а недавно перестало работать.

Пожалуйста, дайте мне знать, если у кого-то еще была эта проблема и как я могу решить это.

Спасибо заранее


person iamshahid    schedule 04.10.2012    source источник
comment
Пробовали ли вы функцию запуска Flash Builder на устройстве, чтобы попробовать ее непосредственно на устройстве Android? Тогда это работает? Если не; можно ли включить сетевой монитор Flash Builder для отслеживания трафика? Поскольку вы используете HTTPS; Вы уверены, что ваш сертификат настроен? У меня были странные проблемы с вызовами HTTPS на Android.   -  person JeffryHouser    schedule 05.10.2012
comment
Спасибо за ответ. Проблема связана с https, и вряд ли есть какое-либо решение. Я попробовал инструкции Adobe для файла crossdomain.xml, но, похоже, они эффективны только для веб-приложений flash/flex. для android apk сервер всегда отклоняет соединение. без https сервис работает нормально. как вы думаете, есть ли способ разрешить https из android apk? В противном случае у меня не будет выбора, кроме как переместить мои служебные файлы в незащищенный домен :(   -  person iamshahid    schedule 06.10.2012
comment
Файл Crossdomain.xml не применяется для нативных приложений; только для браузерных приложений. В моих тестах — довольно давно — я получил всплывающее окно от Android с просьбой принять сертификат домена HTTPS, к которому я пытался получить доступ. Я не верю, что когда-либо находил решение; для моих целей HTTPS не был обязательным, поэтому в итоге мы перешли на HTTP, потому что это было проще и быстрее. Извиняюсь   -  person JeffryHouser    schedule 06.10.2012
comment
Меня тоже эта проблема смущает. Я бы хотел, чтобы Adobe не бросила нас под автобус. Что интересно и отличается от моей ситуации, так это то, что она РАБОТАЕТ на моем Kindle Fire. Другие планшеты не работают. Может ли это быть из-за того, что Kindle Fire имеет среду выполнения AIR, предварительно встроенную в ОС? Будет ли это иметь значение? Также см.: stackoverflow.com/q/14970148   -  person PRB    schedule 03.03.2013
comment
Странный поворот событий - я только что понял, почему это не помогло мне. Мое решение см. здесь: stackoverflow.com/q/14970148 Надеюсь, это поможет кому-то еще посмотреть эту ветку.   -  person PRB    schedule 03.03.2013


Ответы (2)


У меня была аналогичная проблема некоторое время назад, мои запросы HTTPService начали давать сбой, и я не получил ничего полезного в FaultEvent, но после нескольких часов попыток разных вещей я заметил, что у меня включен сетевой монитор во flex, и так как мне нечего было терять, я отключил его и вуаля! Приложение снова заработало!

Я думаю, что когда у вас включен сетевой монитор, приложение перенаправляет все запросы через локальный прокси-сервер или что-то в этом роде, и таким образом вы можете перехватывать запросы, но, похоже, это остается, когда вы создаете версию выпуска и искажаете все запросы.

Поэтому, если у вас включен сетевой монитор, просто отключите его, а затем попробуйте снова создать приложение.

person polloss    schedule 31.10.2012
comment
привет polloss, в то время как я ценю ваше время за ответ, я уже давно пытался отключить монитор сетевой работы, но это совсем не решило эту проблему. Теперь я переместил свои служебные файлы в незащищенный домен. Это действительно решило проблему, но дополнительная проверка безопасности жизненно важна, поскольку соединение между клиентом и сервером больше не является безопасным (я думаю, что мы можем жить с этим). - person iamshahid; 04.11.2012

Похоже, что это связано с тем, как свободная среда выполнения вызывает конечные точки https. Кто-то в этой теме Мобильное приложение Adobe AIR не работает при использовании HTTPS на планшете Nexus, но работает на Kindle выяснило, что при переключении с ограниченной среды выполнения на использование общей среды выполнения AIR ошибка исчезла. Вы также можете попробовать последнюю версию AIR SDK и посмотреть, решит ли это проблему (хотя я наблюдал проблемы с приложениями, работающими на iOS с использованием бета-версии 3.8, поэтому вы можете сначала попробовать 3.7).

person Gareth Arch    schedule 28.08.2013