Телефонная переписка / Кордова whitelisted cross domain SSL-запрос не работает после экспорта APK

Я создал приложение phonegap, которое должно связываться с самоподписанной службой SSL.

Я включил свой url в res / xml / cordova.xml так:

<access origin="https://www.mydomain.com" subdomains="true" />

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

Связь с сервером осуществляется с использованием библиотеки Sencha Touch, например:

 Ext.Ajax.request({ url: 'https://www.mydomain.com', method: 'get', success: function(result) { }, failure: function(result) { } }); 

Любая помощь очень ценится

Проблема в том, что вы используете самозаверяющий сертификат. Android WebView не разрешает по умолчанию самоподписанные сертификаты SSL. PhoneGap / Cordova переопределяет это в классе CordovaWebViewClient, но не сильно отклоняет его поведение; Если приложение отладочно-подписано, оно proceed и проигнорирует ошибку, иначе оно не удастся.

Вы можете изменить связанный с кодом код в своем приложении и заставить метод onReceivedSslError всегда вызывать handler.proceed() – но это не рекомендуется. Не используйте самозаверяющий сертификат!

Я сделал следующее, чтобы обойти ограничение (в настоящее время используется Cordova 1.7.0). Это, безусловно, небезопасно:

 public class MyWebViewClient extends CordovaWebViewClient { public MyWebViewClient(DroidGap ctx) { super(ctx); } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { // testing against getPrimaryError() or hasErrors() will fail on Honeycomb or older. // You might check for something different, such as specific info in the certificate, //if (error.getPrimaryError() == SslError.SSL_IDMISMATCH) { handler.proceed(); //} else { // super.onReceivedSslError(view, handler, error); //} } } 

А затем в основной деятельности:

 @Override public void init() { super.init(); //pass in our webviewclient to override SSL error this.setWebViewClient(this.appView, new MyWebViewClient(this)); } 
Intereting Posts
Фрагмент – как getActivity () возвращает null ПОСЛЕ onAttach Студия Android – эмулятор укладывается за пределы экрана Ошибка автозапуска Android autoLink Вращение ImageView подобно компасу (с «северным полюсом», установленным в другом месте) Android – удаление элемента из списка ListView при длительном нажатии Android – Google Talk Intents Ошибка SurfaceFlinger / gralloc Ошибка при выделении буферной памяти для использования с буфером виртуального фрейма на Android x86 Нуга Разработка пользовательских подклассов Android ViewGroup Если «android: onOptionsItemSelected» возвращает true или false Как изменить вкладку вкладки навигации по умолчанию на настроенное представление вкладки? Как создать свой собственный класс предпочтений Анимация Android Flipboard Eclipse ADT: Java был запущен, но вернулся код выхода = 13 Как получить реальную высоту и ширину экрана? Как использовать loopJ SyncHttpClient для синхронных вызовов?