javax.net.ssl.SSLPeerUnverifiedException:当我在 android 中使用 google place api 时没有对等证书[重复]

2023-12-27

我在 android 模拟器中使用 google place api 时遇到 javax.net.ssl.SSLPeerUnverifiedException: No Peercertificate 异常。下面是我的网址:

https://maps.googleapis.com/maps/api/place/search/json?&location=28.632808,77.218276&radius=1000&sensor=false&key=AIzaSyC3y3fOMTqTkCjNNETQTCKustG7BRk_eVc

当我简单地将上面的网址粘贴到浏览器地址栏中时,它简单地给出了 Json 字符串。所以,我认为不需要任何证书身份验证。

经过如此多的谷歌搜索并投入了 2-3 天后,我使用了 org.apache.http.conn.ssl.SSLSocketFactory 包的 SSLSocketFactory 类来避免对等证书错误。

下面是我的代码:

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;
        }
    }

我正在使用 android api 16 ,当我使用 SSLSocketFactory(SSLSocketContext) 构造函数时,eclipse 给出编译错误,所以我进行了大量搜索并下载了具有以下内容的 jar SSLSocketFactory(SSLSocketContext) ,即“httpclient-4.1.1.jar”文件。我还在项目构建路径中设置了该 jar 的顺序,并设置了最高优先级。现在我收到以下警告:

VFY:unable to resolve direct method 4253:Lorg/apache/http/conn/ssl/SSLSocketFactory.<init>

并跟踪由以下原因引起的错误

java.lang.NoSuchMethodError : org.apace.http.conn.ssl.SSLSocketFactory.<init>

请帮助我,我不知道我错在哪里。


我也遇到这个问题,网上查了很多资料,还是不行通过简单的步骤解决

我不知道确切的原因,但我解决了它重新启动模拟器或创建一个新的模拟器,然后在新的模拟器中运行该项目

我不会说这是确切的答案,但是在修改代码之前先尝试一下具有复杂的代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javax.net.ssl.SSLPeerUnverifiedException:当我在 android 中使用 google place api 时没有对等证书[重复] 的相关文章

随机推荐