我正在尝试使用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();
}