2013-06-25 53 views
5

Próbuję skonfigurować klienta HTTPS na Androidzie używając Restlet ale otrzymuję ten błąd:(1002) - Brak dostępnych złącze klient obsługuje wymaganego protokołu: „https”

Internal Connector Error (1002) - No available client connector supports the required protocol: 'HTTPS'. Please add the JAR of a matching connector to your classpath. Then, register this connector helper manually.

Wiele źródeł powiedzieć, że wystarczy włożyć słoiki do SSL i zależności, a więc dodałem następujące słoiki:

  • org.restlet
  • org.restlet.ext.ssl ​​
    • org.jsslutils
  • org.restlet.ext.httpclient
    • org.apache.commons.codec_1.5
    • org.apache.commons.logging_1.1
    • org.apache .httpclient_4.1
    • org.apache.httpcore_4.1
    • org.apache.httpmime_4.1
    • org.apache.james.mime4j_0.6
    • net.jcip.annotations_1.0

Restlet na docs powiedzieć trzeba dodać zewnętrznego "złącze" dla protokołu HTTPS. Według niego, opcje dla klienta HTTPS są:

  1. Apache HTTP Client
  2. netto (która pochodzi z JDK)

Jestem zakładając mam zarówno na (org. apache.httpclient_4.1 i JDK).

Komunikat o błędzie wspomina o "ręcznej rejestracji pomocnika złącza", ale nie mogłem wymyślić, jak to zrobić. Dokumenty wspominają parametry złącz. Niektóre łącza są uszkodzone, inne przechodzą do javadocs bez dodatkowego tekstu. This one zawiera listę niektórych parametrów, ale wszystkie pozornie opcjonalne ustawienia i nic na temat ustawiania alternatywnego złącza. Niektóre źródła w Internecie miały fragmenty kodu ustawiające rzeczy według "System.setProperty". Kopiuję - wklejałem niektóre i próbowałem bez powodzenia.

+0

Czy udało Ci się rozwiązać ten problem? – dazito

+0

Całkowicie zrezygnowaliśmy z Restletu. Używał tylko httpclienta Apache'a, o ile pamiętam. – Vituel

+0

Proszę zobaczyć moją odpowiedź poniżej. Ten problem powinien być w pełni rozwiązany teraz w wersji 2.2 –

Odpowiedz

1

Ten problem został w pełni rozwiązany w wersji Restlet 2.2, w której wewnętrzne złącze HTTP/HTTPS oparte jest teraz na HttpURLConnection, nie wymagając żadnych dodatkowych zależności. Jest lekki i nie musi używać interfejsu API klienta Apache HTTP. Działa to szczególnie dobrze w przypadku wydania na Androida.