Java 无法在android中执行HTTPS/SSL/

Java 无法在android中执行HTTPS/SSL/,java,android,ssl,httpclient,Java,Android,Ssl,Httpclient,因为我是android studio的新手,所以我想使用自己的web服务(REST客户端) 我试图在android中执行httprequest。 url正在使用https ssl证书,我得到一个错误消息 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate android studio 这是我的代码: private void executeRequest(HttpUriRequest request, String ur

因为我是android studio的新手,所以我想使用自己的web服务(REST客户端) 我试图在android中执行httprequest。 url正在使用https ssl证书,我得到一个错误消息

javax.net.ssl.SSLPeerUnverifiedException: No peer certificate android studio
这是我的代码:

 private void executeRequest(HttpUriRequest request, String url)
 {
  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());

   HttpClient client = new DefaultHttpClient();
    HttpResponse httpResponse;

    try {
        StrictMode.ThreadPolicy policy = new  StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        httpResponse = client.execute(request);
        responseCode = httpResponse.getStatusLine().getStatusCode();
        message = httpResponse.getStatusLine().getReasonPhrase();

        HttpEntity entity = httpResponse.getEntity();

        if (entity != null) {

            InputStream instream = entity.getContent();
            response = convertStreamToString(instream);

            // Closing the input stream will trigger connection release
            instream.close();
        }

    } catch (ClientProtocolException e)  {
        client.getConnectionManager().shutdown();
        e.printStackTrace();
    } catch (IOException e) {
        client.getConnectionManager().shutdown();
        e.printStackTrace();

    }
}
我也尝试了这个代码,但没有工作太多

public static HttpClient createHttpClient()
{
    HttpParams params = new BasicHttpParams();
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
    HttpProtocolParams.setUseExpectContinue(params, true);

    SchemeRegistry schReg = new SchemeRegistry();
    schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
    ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);

    return new DefaultHttpClient(conMgr, params);
}

谢谢

您是否已检查配置文件以允许网络连接?检查xml配置文件并尝试允许internet连接。

您是否已检查所访问的服务器是否具有正确的证书链?请参阅hey hack_on,如何检查我的url是否具有正确的证书链,我猜它具有https和ssl证书。嘿,我已经在中进行了测试,我得到了一个和trusted=Yes。还有什么我能做的吗?请允许我对这个问题感到非常沮丧。在安卓设备上,从默认浏览器点击它——这样行吗?Android/Java如何知道信任服务器——签署服务器证书的顶级证书是否已经被浏览器信任?看看如何做到这一点。是的,它的工作,我认为这是没有问题的网址,这是因为我的代码。也许我错过了什么?你是说在舱单上?是的,我已经添加了上网权限。