GCM HTTP服务器javax.net.ssl.SSLPeerUnverifiedException:peer未经过身份验证

时间:2014-12-18 10:46:20

标签: apache http httprequest google-cloud-messaging

我正在尝试使用apache http客户端实现GCM HTTP服务器。  我得到以下例外:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:390)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:561)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
at com.hp.pm.web.command.PostAlertsToGCM.Command(PostAlertsToGCM.java:264)
at com.hp.pm.web.command.PostAlertsToGCM.main(PostAlertsToGCM.java:277)

我的代码看起来像这样。有人可以帮忙吗?

HttpClient httpClient = new DefaultHttpClient();
    try {
        HttpPost request = new HttpPost("https://android.googleapis.com/gcm/send");
        HttpHost proxy = new HttpHost("proxy.sgp.com", 8080, "https");
        httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);
        StringEntity params =new StringEntity("{\"collapse_key\" : \"Food-Promo\", \"data\" : {\"Category\" : \"FOOD\",\"Type\": \"VEG\",}, \"registration_ids\": [\"APA91bEk7GPFVxzOidvB3JKCMWq3FHpAaTj2dBv9VGOQkKtLAEiVGR8TDi1U4D1k293ODAFTJ8dNfE2gzJNfCvB1sjewZu2fGOIJmY8dgjcNTZQYi4QfyQH-AfsdaO0qEmQnbEeEtsUQ5LzWrIHbosdfAhJMx1bNd7g0O9bg\"]}");
        request.addHeader("Content-Type", "application/json");
        request.addHeader("Authorization", "key=AIzaSyAfsYc53L6kg_XD9ioWdLjUAi2iEfNKidSF8");
        request.setEntity(params);
        HttpResponse response = httpClient.execute(request);
        System.out.println(response.toString());
    }catch (Throwable ex) {
        ex.printStackTrace();
    } finally {
        httpClient.getConnectionManager().shutdown();
    }

1 个答案:

答案 0 :(得分:0)

这似乎是与SSL证书相关的问题。这个link可以帮助您。