Android / Java - Comment créer une connexion HTTPS?
J'ai ici de code qui me permet de me connecter aux serveurs https et le transfert de données. Il fonctionne très bien, mais je veux savoir si je suis en train de faire de la bonne façon et je suis en train de faire une connexion sécurisée. Veuillez vérifier mon travail. Merci.
public class HTTPSClient extends DefaultHttpClient
{
public HTTPSClient()
{
}
@Override
protected ClientConnectionManager createClientConnectionManager()
{
SchemeRegistry registry = new SchemeRegistry();
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
final SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
//socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", socketFactory, 80));
registry.register(new Scheme("https", socketFactory, 443));
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
return new SingleClientConnManager(params, registry);
}
}
- Je utiliser ce code comme ceci:
HttpResponse response = mConnection.httpsClient.execute(new HttpHost("www.somehostname.com", 80), new HttpGet("https://someaddress")));
J'ai ensuite lu la réponse à partir de là.
Merci encore.
source d'informationauteur RyanM
Vous devez vous connecter pour publier un commentaire.
Regarder le fonctionnaire SSL personnalisé contexte tutoriel Apache HttpClient.
De Stephen C mentionné, vous n'avez pas besoin de vous inscrire le port 80 pour le https contexte. S'inscrire à la place de http (si nécessaire). Cela signifie que, lorsque vous appelez une url https, le socketFactory, comme vous l'avez indiqué, sera utilisé.
REMARQUE: Vous recevrez dans la plupart des cas, un "Certificat de non confiance" ou similaire exception lorsque vous vous connectez à partir d'appareils Android avec des sites personnalisés des attestations ou des certificats de ne pas très bien connu des émetteurs. Si c'est le cas, vous devez créer un certificat personnalisé magasin pour votre application, de sorte qu'il aura la confiance de vos certificats de serveur. Si vous voulez savoir à chaud pour y parvenir, vous pouvez regarder mon article du blog
Si vous voulez vérifier si votre appareil est vraiment communiquer via une connexion sécurisée, vous pouvez faire l'appel à la https point de terminaison de votre émulateur android et de capturer le trafic avec Wireshark sur votre ordinateur du développeur.
Espère que cette aide
Je me méfie de ce:
Particulièrement la 2ème ligne. Pourquoi voulez-vous enregistrer le port 80 pour le "https" régime?
C'est soit inoffensive /redondante, ou vous allez envoyer "https" les requêtes sur le port 80.