2017-02-28 3 views
0

私はアンドロイドスタジオで新しいので、私は自分のWebサービス(RESTクライアント)を消費したかった 私はアンドロイドでhttprequestを実行しようとしています。 URLがhttps SSL証明書を使用している、と私はエラーcantはHTTPS/SSL/inを実行します。

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

を働いていませんありがとう

+1

あなたがヒットしているサーバーに適切な証明書チェーンがあることを確認しましたか? http://stackoverflow.com/questions/18126372/safely-fixing-javax-net-ssl-sslpeerunverifiedexception-no-peer-certificate –

+0

ちょっとhack_on、私のURLが適切な証明書チェーンを持っていることを確認する方法、httpsとssl証明書私は推測する。 – gilllsss

+0

ねえ、私はすでにテストして、私はAを取得し、信頼=はい。私はもっ​​とできることは何ですか? plsはこの問題についてうんざりしています – gilllsss

答えて

0

ネットワークに接続できるように設定ファイルを確認しましたか? XML設定ファイルをチェックし、インターネット接続を許可してください。

+0

マニフェストの意味ですか? yes iveはすでにインターネットの許可を追加しています。 – gilllsss