【发布时间】:2014-12-18 10:46:19
【问题描述】:
我正在尝试使用 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();
}
【问题讨论】:
标签: apache http httprequest google-cloud-messaging