调用 远程 HTTPS网址时出错,我也注册了https,可为啥还是不行呢,源代码哪下:
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register (new Scheme ("http", PlainSocketFactory.getSocketFactory (), 80));
registry.register (new Scheme ("https", socketFactory, 443));
DefaultHttpClient client = new DefaultHttpClient();
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
//ApiCallWithNoAuth apicall = new ApiCallWithNoAuth(httpClient);
HttpPost httpPost = new HttpPost("https://zwosft.com/02/tts.htm");
// 添加Body参数
List<NameValuePair> lstParams = new ArrayList<NameValuePair>(2);
lstParams.add(new BasicNameValuePair("Pid", ConstantsUtil.Mobisage_publishID));
lstParams.add(new BasicNameValuePair("Key", "baidu"));
httpPost.setEntity(new UrlEncodedFormEntity(lstParams));
// 添加 header头
Header []headers = new BasicHeader[] {
new BasicHeader("Content-Type","application/x-www-form-urlencoded"),
new BasicHeader("Host","config.adsage.com")().getContentLength())
};
httpPost.setHeaders(headers);
// 发送请求,并取返回值
//String res = apicall.doHttpPost(httpPost);
HttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String res = EntityUtils.toString(response.getEntity());
Log.i("WeiBo", res);
}以下是错误代码:
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): java.lang.RuntimeException: javax.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 UTCTime: wrong format for DER, identifier at [139]
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:674)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:474)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.CertificateChainValidator.doHandshakeAndValidateServerCertificates(CertificateChainValidator.java:86)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.HttpsConnection.openConnection(HttpsConnection.java:332)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.Connection.openHttpConnection(Connection.java:479)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.Connection.processRequests(Connection.java:297)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.ConnectionThread.run(ConnectionThread.java:144)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): Caused by: javax.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 UTCTime: wrong format for DER, identifier at [139]
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at javax.security.cert.X509Certificate.getInstance(X509Certificate.java:104)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at javax.security.cert.X509Certificate.getInstance(X509Certificate.java:223)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:658)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): ... 8 more
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register (new Scheme ("http", PlainSocketFactory.getSocketFactory (), 80));
registry.register (new Scheme ("https", socketFactory, 443));
DefaultHttpClient client = new DefaultHttpClient();
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
//ApiCallWithNoAuth apicall = new ApiCallWithNoAuth(httpClient);
HttpPost httpPost = new HttpPost("https://zwosft.com/02/tts.htm");
// 添加Body参数
List<NameValuePair> lstParams = new ArrayList<NameValuePair>(2);
lstParams.add(new BasicNameValuePair("Pid", ConstantsUtil.Mobisage_publishID));
lstParams.add(new BasicNameValuePair("Key", "baidu"));
httpPost.setEntity(new UrlEncodedFormEntity(lstParams));
// 添加 header头
Header []headers = new BasicHeader[] {
new BasicHeader("Content-Type","application/x-www-form-urlencoded"),
new BasicHeader("Host","config.adsage.com")().getContentLength())
};
httpPost.setHeaders(headers);
// 发送请求,并取返回值
//String res = apicall.doHttpPost(httpPost);
HttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String res = EntityUtils.toString(response.getEntity());
Log.i("WeiBo", res);
}以下是错误代码:
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): java.lang.RuntimeException: javax.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 UTCTime: wrong format for DER, identifier at [139]
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:674)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:474)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.CertificateChainValidator.doHandshakeAndValidateServerCertificates(CertificateChainValidator.java:86)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.HttpsConnection.openConnection(HttpsConnection.java:332)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.Connection.openHttpConnection(Connection.java:479)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.Connection.processRequests(Connection.java:297)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at android.net.http.ConnectionThread.run(ConnectionThread.java:144)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): Caused by: javax.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 UTCTime: wrong format for DER, identifier at [139]
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at javax.security.cert.X509Certificate.getInstance(X509Certificate.java:104)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at javax.security.cert.X509Certificate.getInstance(X509Certificate.java:223)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:658)
11-13 16:37:04.659: ERROR/AndroidRuntime(27823): ... 8 more
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货