2010-02-11 4 views
3

можно ли подключиться к мыльному серверу с помощью ksoap2 android через https?Android ksoap2 через https

я получаю ошибку, что «Hostname < ###> не проверено»

Я делаю

AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL); 
androidHttpTransport.call(SOAP_ACTION, envelope); 

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

Кто-нибудь нашел способ узнать или использовать вызов?

спасибо вам помочь

+0

Вы нашли решение? У меня такая же проблема. Есть ли альтернатива для отправки запроса SOAP через HTTPS? – RobGThai

+0

no i stil havnt нашел ответ отдельно от перехода на отдых/json –

ответ

2

андроида ksoap2 2.5.2 вне который поддерживает протокол HTTPS

http://code.google.com/p/ksoap2-android/

проблема есть я не совсем уверен, как использовать его

HttpsTransportSE aht = new HttpsTransportSE(host, port, file, timeout) 

, что shoud i введите параметр «файл»? кто-нибудь есть идея?

кстати AndroidHttpTransport осуждается в последней версии ksoap2

+1

см. Документацию по параметрам здесь https://gist.github.com/908048 ... Я добавлю в javadoc позже –

2

Вы можете задать имя файла, как пустая строка («»). Рассматривая исходный код ksoap, он передает параметр java.net.URL, а из Sun Javadoc он ссылается на файл - «файл на хосте». Я отказался от попытки использовать ksoap2 для вызовов SOAP https. Проблема связана с тем, как Android обрабатывает SSL-соединения. Единственное решение, похоже, заключается в создании локального хранилища ключей для хранения сертификата SSL и написания обертки вокруг Apache Httpclient для использования сертификата. Поэтому я мог бы реализовать эти вызовы с помощью REST. Думаю, это то, что Google хочет от нас.

+0

Если вы хотите установить безопасные подключения к Служба REST с локальным хранилищем ключей, вы можете посмотреть мою запись в блоге по адресу http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/ Он содержит подробный шаг поэтапное описание. Надеюсь, это поможет – saxos

+0

Спасибо, что это помогло. Я видел это во время поиска чего-то подобного. У меня есть несколько комментариев, которые я добавлю в сообщение в блоге после очистки моего кода. –

+0

Спасибо. Не стесняйтесь прокомментировать;) – saxos

6

Ну, вам нужно сделать две вещи на Android устройств:

  1. Для SSL вы должны доверять сертификату сервера. Вы можете либо установить поддельный менеджер доверия, как здесь (http://groups.google.com/group/android-developers/browse_thread/thread/1ac2b851e07269ba/c7275f3b28ad8bbc?lnk=gst&q=certificate, а затем вызвать allowAllSSL(), прежде чем выполнять какую-либо связь/вызов SSL с помощью ksoap2) или приложить еще несколько усилий, сделайте его более безопасным и следуйте инструкциям saxos, я думаю.
  2. Затем вам нужно использовать ksoap2-android или, более конкретно, класс (KeepAlive) HttpsTransportSE, как это new KeepAliveHttpsTransportSE(host, port, file, timeout);. Параметры попадают в объект URL, например, для доступа к установке Jira это что-то вроде new KeepAliveHttpsTransportSE("host.whatever", 443, "/rpc/soap/jirasoapservice-v2", 1000)

Btw .: Я написал на «Android устройств», потому что я считаю полезным, чтобы проверить вещи первой в среде J2SE и здесь (KeepAlive) HttpsTransportSE материал не хватает в lib (я использовал ksoap2-j2se-full-2.1.2.jar). Просто получите источники для трех классов HttpsTransportSE, KeepAliveHttpsTransportSE и HttpsServiceConnectionSE от ksoap2-android и поместите их в свой проект J2SE и используйте их. Он работает и повышает производительность, чтобы получить первые шаги с неизвестным веб-сервисом (если вы знаете веб-сервис и как настроить ksoap2, это бесполезно, но это было удобно для меня, поскольку я был новичком в ksoap2 и его андроиде дополнительная выгода).

+0

Спасибо. Это работало как шарм. –

+1

Я реализовал это здесь https://gist.github.com/908048 –