Se connecter en HTTPS à partir de Android de REPOS et de service web SOAP
Je suis confronté à un problème pour appeler https à partir d'Android. Peut-on s'il vous plaît aider avec les étapes pour vous connecter à un serveur https.
J'ai essayé de vous connecter à google avec https et sa fonctionne bien, mais lorsque j'essaie de me connecter à mon serveur local, je suis confrontée à des problèmes.
- voulez le connecter à un service web RESTful avec https
-
souhaitez connecter un SAVON services web développés à l'aide de JAX-WS avec le protocole https.
-
Code pour se connecter avec RESTFul
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER; DefaultHttpClient client = new DefaultHttpClient(); SchemeRegistry registry = new SchemeRegistry(); SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory(); socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier); registry.register(new Scheme("https", socketFactory, 443)); SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry); DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams()); //Set verifier HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); //Example send http request //final String url = "https://encrypted.google.com/"; final String url = "https://ipaddress:8181/RESTTest/cars"; HttpPost httpPost = new HttpPost(url); try{ HttpResponse response = httpClient.execute(httpPost); System.out.println(response); }catch(Exception e){ e.printStackTrace(); }
son travail d'amende pour google, mais ne fonctionne pas pour mon serveur et qu'il donne
javax.net.le protocole ssl.SSLException: Pas de confiance certificat de serveur
-
Code pour se connecter avec du SAVON:
public String getString(final String methodName, Map<String, Object> params) throws Exception { HttpTransportSE httpsTransportSE = new HttpTransportSE("https://ipaddress:8181/BankingWS/banking?wsdl"); try { SoapObject request = new SoapObject("https://test/", methodName); if(params != null && params.size() > 0){ Set<String> keys = params.keySet(); Iterator<String> iterator = keys.iterator(); while(iterator.hasNext()){ String key = iterator.next(); request.addProperty(key, params.get(key)); key = null; } } SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.setOutputSoapObject(request); TrustManagerManipulator.allowAllSSL(); httpsTransportSE.call(methodName, envelope); SoapPrimitive sp = (SoapPrimitive) envelope.getResponse(); return sp.toString(); } catch (Exception exception) { System.out.println(exception.toString()); throw exception; } }
Dans le code ci-dessus à l'aide de la TrustManagerManipulator à partir du lien suivant:
http://abhinavasblog.blogspot.com/2011/07/allow-untrusted-certificate-for-https.html
C'est aussi ne fonctionne pas et quand je vérifie le code de la réponse qu'il donne
SoapFault - faultcode: 'S:Client' faultstring: 'Cannot find dispatch method for {test.WSEndPointPort}authenticate' faultactor: 'null' detail: null
S'il vous plaît aider pour résoudre ce problème, car je ne suis pas en mesure d'appeler https à partir d'Android par n'importe quel moyen 🙁
Je vous remercie beaucoup pour votre temps et vos efforts.
Merci,
Ishan
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour créer un X509TrustManager qui échappent à tout contrôle de sécurité. Vous pouvez trouver un exemple dans ce des questions similaires:
Établir une connexion à un serveur HTTPS à partir de Java, et d'ignorer la validité du certificat de sécurité
ou
Comment ignorer certificat SSL erreurs dans Apache HttpClient 4.0