}这段代码仍有异常抛出: java.lang.ClassCastException: com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl at TestHttps.main(TestHttps.java:19)
呵呵,我运行你上面的代码的结果是: java.net.SocketException: Default SSL context init failed: null at javax.net.ssl.DefaultSSLSocketFactory.createSocket([DashoPro-V1.2-120 198]) at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.doConnect([Da shoPro-V1.2-120198]) at com.sun.net.ssl.internal.www.protocol.https.NetworkClient.openServer( [DashoPro-V1.2-120198]) at com.sun.net.ssl.internal.www.protocol.https.HttpClient.d([DashoPro-V1 .2-120198]) at com.sun.net.ssl.internal.www.protocol.https.HttpClient.<init>([DashoP ro-V1.2-120198]) at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.<init>([Dasho Pro-V1.2-120198]) at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.a([DashoPro-V 1.2-120198]) at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.a([DashoPro-V 1.2-120198]) at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection.connec t([DashoPro-V1.2-120198]) at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection.getOut putStream([DashoPro-V1.2-120198]) at TestHttps.main(TestHttps.java:27)
to cherami(cherami): 可能是因为我的那段代码是连接我本机的tomcat吧。下面的代码是连接https://www.sun.com的。你再帮我看看。 import java.net.*; import java.io.*; import javax.net.ssl.*;public class TestHttps{ private String httpsURL; private URL destURL; private HttpsURLConnection urlConn; private String request; public void connectURL(){ try{ destURL = new URL(httpsURL); urlConn = (HttpsURLConnection)destURL.openConnection(); }catch(Exception e){ System.out.println("Connect URL Error :"+"\n"+e); } } public void doResponse(){ try{ DataInputStream inStream = new DataInputStream(urlConn.getInputStream()); System.out.println("Print HeaderFile:"); int i=0; while(urlConn.getHeaderField(i)!=null){ System.out.println(urlConn.getHeaderFieldKey(i)+" "+urlConn.getHeaderField(i)); i++; } System.out.println("method="+urlConn.getRequestMethod()); System.out.println(""+urlConn.getResponseCode()); int ch; while ((ch = inStream.read()) >= 0) { System.out.print((char) ch); } inStream.close(); }catch(Exception e){ System.out.println("Do Response Error"+"\n"+e); } } public static void main(String args[]){ TestHttps th = new TestHttps(); th.httpsURL="https://www.sun.com"; th.connectURL(); th.doResponse(); } }
has examples.
import java.net.*;
import java.io.*;
import javax.net.ssl.*;
import java.security.Security;public class TestHttps
{
public static void main(String args[])
{
URL destURL;
HttpsURLConnection urlConn;
String request;
try {
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
// Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.trustStore","MyCacertsFile");
destURL = new URL("https://localhost:8443/examples/jsp/checkbox/checkresult.jsp");
urlConn = (HttpsURLConnection)destURL.openConnection();
request="fruit=apples&fruit=oranges";
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
urlConn.setUseCaches(false);
urlConn.setAllowUserInteraction(true);
urlConn.setRequestProperty("Content-type","application/x-www-form-urlencoded");
urlConn.setRequestProperty("Content-length", ""+request.length());
DataOutputStream outStream = new DataOutputStream(urlConn.getOutputStream());
outStream.writeBytes(request);
outStream.close();
try{
DataInputStream inStream = new DataInputStream(urlConn.getInputStream());
System.out.println("Print HeaderFile:");
int i=0;
while(urlConn.getHeaderField(i)!=null){
System.out.println(urlConn.getHeaderFieldKey(i)+" "+urlConn.getHeaderField(i));
i++;
}
System.out.println("user-agent= "+urlConn.getHeaderField("User-Agent"));
System.out.println("Proxy-Authorization= "+urlConn.getHeaderField("Proxy02"));
System.out.println("method="+urlConn.getRequestMethod());
System.out.println(""+urlConn.getResponseCode()); int ch;
while ((ch = inStream.read()) >= 0) {
System.out.print((char) ch); }
inStream.close();
}catch(Exception e){System.out.println("Error"+"\n"+e);}
}catch (Exception e) {
e.printStackTrace();
}
}
}这段代码也有异常抛出:
java.lang.ClassCastException: com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl
at TestHttps.main(TestHttps.java:19)
也就是说,已经有了HttpsURLConnection这个类,可以用它来建立HTTPS的连接。to skyyoung(路人甲):这个网址在你上次给我解答时我就去看了。现在我也在看,只是有
点莫不着头绪。希望两位朋友能在帮我看看。附调试代码如下:
import java.net.*;
import java.io.*;
import javax.net.ssl.*;
import java.security.Security;public class TestHttps
{
public static void main(String args[])
{
URL destURL;
HttpsURLConnection urlConn;
String request;
try {
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
// Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.trustStore","MyCacertsFile");
destURL = new URL("https://localhost:8443/examples/jsp/checkbox/checkresult.jsp");
urlConn = (HttpsURLConnection)destURL.openConnection();
request="fruit=apples&fruit=oranges";
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
urlConn.setUseCaches(false);
urlConn.setAllowUserInteraction(true);
urlConn.setRequestProperty("Content-type","application/x-www-form-urlencoded");
urlConn.setRequestProperty("Content-length", ""+request.length());
DataOutputStream outStream = new DataOutputStream(urlConn.getOutputStream());
outStream.writeBytes(request);
outStream.close();
try{
DataInputStream inStream = new DataInputStream(urlConn.getInputStream());
System.out.println("Print HeaderFile:");
int i=0;
while(urlConn.getHeaderField(i)!=null){
System.out.println(urlConn.getHeaderFieldKey(i)+" "+urlConn.getHeaderField(i));
i++;
}
System.out.println("user-agent= "+urlConn.getHeaderField("User-Agent"));
System.out.println("Proxy-Authorization= "+urlConn.getHeaderField("Proxy02"));
System.out.println("method="+urlConn.getRequestMethod());
System.out.println(""+urlConn.getResponseCode()); int ch;
while ((ch = inStream.read()) >= 0) {
System.out.print((char) ch); }
inStream.close();
}catch(Exception e){System.out.println("Error"+"\n"+e);}
}catch (Exception e) {
e.printStackTrace();
}
}
}这段代码仍有异常抛出:
java.lang.ClassCastException: com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl
at TestHttps.main(TestHttps.java:19)
java.net.SocketException: Default SSL context init failed: null
at javax.net.ssl.DefaultSSLSocketFactory.createSocket([DashoPro-V1.2-120
198])
at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.doConnect([Da
shoPro-V1.2-120198])
at com.sun.net.ssl.internal.www.protocol.https.NetworkClient.openServer(
[DashoPro-V1.2-120198])
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.d([DashoPro-V1
.2-120198])
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.<init>([DashoP
ro-V1.2-120198])
at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.<init>([Dasho
Pro-V1.2-120198])
at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.a([DashoPro-V
1.2-120198])
at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.a([DashoPro-V
1.2-120198])
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection.connec
t([DashoPro-V1.2-120198])
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection.getOut
putStream([DashoPro-V1.2-120198])
at TestHttps.main(TestHttps.java:27)
可能是因为我的那段代码是连接我本机的tomcat吧。下面的代码是连接https://www.sun.com的。你再帮我看看。
import java.net.*;
import java.io.*;
import javax.net.ssl.*;public class TestHttps{
private String httpsURL;
private URL destURL;
private HttpsURLConnection urlConn;
private String request; public void connectURL(){
try{
destURL = new URL(httpsURL);
urlConn = (HttpsURLConnection)destURL.openConnection();
}catch(Exception e){
System.out.println("Connect URL Error :"+"\n"+e);
}
} public void doResponse(){
try{
DataInputStream inStream = new DataInputStream(urlConn.getInputStream());
System.out.println("Print HeaderFile:");
int i=0;
while(urlConn.getHeaderField(i)!=null){
System.out.println(urlConn.getHeaderFieldKey(i)+" "+urlConn.getHeaderField(i));
i++;
}
System.out.println("method="+urlConn.getRequestMethod());
System.out.println(""+urlConn.getResponseCode()); int ch;
while ((ch = inStream.read()) >= 0) {
System.out.print((char) ch);
}
inStream.close();
}catch(Exception e){
System.out.println("Do Response Error"+"\n"+e);
}
} public static void main(String args[]){ TestHttps th = new TestHttps();
th.httpsURL="https://www.sun.com";
th.connectURL();
th.doResponse();
}
}
http://www.onjava.com/pub/a/onjava/2001/05/03/java_security.html