Ich bin konfrontiert mit einer javax.net.ssl.SSLPeerUnverifiedException: Keine Peer-Zertifikat-Ausnahme bei der Arbeit mit Google Place API in Android-Emulator. im Folgenden meine url ist:javax.net.ssl.SSLPeerUnverifiedException: Keine Peer-Zertifikat, während ich arbeite mit Google Place API in Android
https://maps.googleapis.com/maps/api/place/search/json?&location=28.632808,77.218276&radius=1000&sensor=false&key=AIzaSyC3y3fOMTqTkCjNNETQTCKustG7BRk_eVc
, wenn ich einfach, oben uRL in Browser-Adressleiste einfügen, einfach es gibt Json string.So, ich denke, es keine Notwendigkeit einer Zertifikatsauthentifizierung ist.
Nachdem so viele googeln und gewidmet 2-3 Tage, habe ich verwendet SSLSocketFacory-Klasse von org.apache.http.conn.ssl.SSLSocketFactory-Paket Peer-Zertifikat Fehler zu vermeiden.
unten ist mein Code:
public static HttpClient wrapClient(HttpClient base) {
try {
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
X509HostnameVerifier verifier = new X509HostnameVerifier() {
public void verify(String string, SSLSocket ssls) throws IOException {
}
public void verify(String string, X509Certificate xc) throws SSLException {
}
public void verify(String string, String[] strings, String[] strings1) throws SSLException {
}
public boolean verify(String string, SSLSession ssls) {
return true;
}
};
ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx);
ssf.setHostnameVerifier(verifier);
ClientConnectionManager ccm = base.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", ssf, 443));
return new DefaultHttpClient(ccm, base.getParams());
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
I android api 16 verwende, und wenn ich SSLSocketFactory (SSLSocketContext) Konstruktor verwendet, Eclipse gibt compliation Fehler, also habe ich eine Menge und Download jar SSLSocketFactory suchen zu müssen (SSLSocketContext), das „Httpclient-4.1.1.jar“ ist file.and i auch um dieses Glas in dem Projekterstellungspfad festgelegt, hat höchsten priority.Now gesetzt erhalte ich folgende Warnung:
VFY:unable to resolve direct method 4253:Lorg/apache/http/conn/ssl/SSLSocketFactory.<init>
Und folgende lange Fehlerspur, verursacht durch
java.lang.NoSuchMethodError : org.apace.http.conn.ssl.SSLSocketFactory.<init>
Bitte, hilf mir, ich weiß nicht, wo ich falsch liege.
es auf einem realen Gerät passiert das? Welche Version von Android emuliert Ihr Emulator? Die Verwendung eines 'no check' Trust-Managers ist eine * sehr schlechte * Idee, also nicht. –
Das Problem wurde behoben. Vielen Dank stackoverflow.Der unten stehende Link hat mein Problem gelöst. http://StackOverflow.com/questions/7622004/android-making-https-request/13485550#13485550 – ved
Tun Sie dies nicht. Das Deaktivieren von SSL ist ein großes Sicherheitsloch. Sorry für alle Caps. – Bishnu