javax.net.ssl.SSLPeerUnverifiedException:没有对方的证书,而我与谷歌的地方API中的机器人工作 [英] javax.net.ssl.SSLPeerUnverifiedException: No peer certificate while I am working with google place api in android
问题描述
我现在面临一个javax.net.ssl.SSLPeerUnverifiedException:没有对方的证书例外,而与谷歌的地方API中的Android emulator.Below工作是我的网址:
<$p$p><$c$c>https://maps.googleapis.com/maps/api/place/search/json?&location=28.632808,77.218276&radius=1000&sensor=false&key=AIzaSyC3y3fOMTqTkCjNNETQTCKustG7BRk_eVc当我简单地说,上面粘贴URL在浏览器地址栏中,简单给出的Json string.So,我认为没有必要任何证书的认证。
在做这么多的使用Google倾注2-3天,我用SSLSocketFacory类org.apache.http.conn.ssl.SSLSocketFactory包,以避免对证书错误。
下面是我的code:
公共静态的HttpClient wrapClient(HttpClient的基础){
尝试 {
的SSLContext CTX = SSLContext.getInstance(TLS);
X509TrustManager TM =新X509TrustManager(){
公共无效checkClientTrusted(x509证书[] XCS,串串)抛出CertificateException {
}
公共无效checkServerTrusted(x509证书[] XCS,串串)抛出CertificateException {
}
公共x509证书[] getAcceptedIssuers(){
返回null;
}
};
X509HostnameVerifier验证=新X509HostnameVerifier(){
公共无效验证(串串,SSLSocket SSLS)抛出IOException异常{
}
公共无效验证(串串,x509证书XC)抛出异常SSLException {
}
公共无效验证(字符串,字符串,字符串[]字符串,字符串[] strings1)抛出异常SSLException {
}
公共布尔验证(字符串字符串的SSLSession SSLS){
返回true;
}
};
ctx.init(空,新的TrustManager [] {} TM,NULL);
SSLSocketFactory的SSF =新的SSLSocketFactory(CTX);
ssf.setHostnameVerifier(验证);
ClientConnectionManager CCM = base.getConnectionManager();
SchemeRegistry SR = ccm.getSchemeRegistry();
sr.register(新计划(https开头,社保基金,443));
返回新DefaultHttpClient(CCM,base.getParams());
}赶上(例外前){
ex.printStackTrace();
返回null;
}
}
我使用Android的API 16,当我使用的SSLSocketFactory(SSLSocketContext)构造,日食给compliation错误,所以我搜索了很多,有下载JAR 的SSLSocketFactory(SSLSocketContext),这是HttpClient的-4.1.1.jarfile.And我还设置了一罐项目构建路径的顺序,设置最高priority.Now我得到以下警告:
VFY:无法解决直接的方法4253:Lorg /阿帕奇/ HTTP /康涅狄格州/ SSL / SSLSocketFactory的&LT; INIT&GT;
和按
下面的错误造成的长期跟踪 java.lang.NoSuchMethodError:org.apace.http.conn.ssl.SSLSocketFactory&LT; INIT&GT;
请,帮助我,我不知道,我在哪里错了。
我也有这个问题,并搜查很多东西在互联网,但我的由一个简单的步骤,解决
我不知道确切的原因,但我用的重新启动仿真器解决了它,或者创建一个新的模拟器,并运行在新的仿真器项目
我不会说这是确切的答案,但修改之前尝试一下您的编码与复杂codeS
I am facing an javax.net.ssl.SSLPeerUnverifiedException: No peer certificate exception while working with google place api in android emulator.Below is my url:
https://maps.googleapis.com/maps/api/place/search/json?&location=28.632808,77.218276&radius=1000&sensor=false&key=AIzaSyC3y3fOMTqTkCjNNETQTCKustG7BRk_eVc
when i simply , paste above url in browser address bar , it simple gives Json string.So , i think there is no need of any certificate authentication.
After doing so many googling and devoted 2-3 days, i've used SSLSocketFacory class of org.apache.http.conn.ssl.SSLSocketFactory package to avoid peer certificate error.
below is my 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 am using android api 16 , and when I used SSLSocketFactory(SSLSocketContext) constructor,eclipse gives compliation error , so i've search alot and download jar having SSLSocketFactory(SSLSocketContext) ,which is "httpclient-4.1.1.jar" file.And i also set order of that jar in project build path , have set highest priority.Now I am getting following warning:
VFY:unable to resolve direct method 4253:Lorg/apache/http/conn/ssl/SSLSocketFactory.<init>
And following long trace of error caused by
java.lang.NoSuchMethodError : org.apace.http.conn.ssl.SSLSocketFactory.<init>
Please , help me I don't know ,where I am wrong.
I too had this problem, and searched lot of things in Internet, but I solved by a simple step
I don't know the exact Cause, But I solved it by Restarting Emulator or create a NEW Emulator, and Run the project in that new Emulator
I won't say this is the exact answer but Try it before modifying your coding with Complex codes
这篇关于javax.net.ssl.SSLPeerUnverifiedException:没有对方的证书,而我与谷歌的地方API中的机器人工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!