try { PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream()))); out.println(getRequest); out.println(hostSpecification); out.println(); out.flush(); if (out.checkError()) System.out.println("SSLSocketClient: java.io.PrintWriter error"); /* read response */ BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println(inputLine); } in.close(); out.close(); socket.close(); } catch(Exception e) { e.printStackTrace(); }
}
} ////////////////////////////////////////////////////////////////////////////// 异常: java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:507) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:546) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:349)GET /index.html HTTP/1.1 Host: 72.5.124.61 at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:69) at SSLTest.main(SSLTest.java:51) java.lang.NullPointerException at SSLTest.main(SSLTest.java:77)
72.5.124.61 是sun 公司的www.sun.com的ip地址 to amozon() 必须手动导入服务器证书 到证书库吗? 如果不知道服务器的证书 怎么办?
如果只是要验证服务器端,那么不导入信任证书也是可以的,不过IE会提醒你。
是什么原因?我想要读出页面的内容需要在哪里导入证书?
/////////////////////////////////////////////////////////////////////////////
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.SSLSocket;import com.sun.net.ssl.SSLContext;
import com.sun.net.ssl.TrustManager;
import com.sun.net.ssl.X509TrustManager;import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Properties;
import java.io.IOException;
import java.io.*;
public class SSLTest { public static void main(String args[])
{
/*
X509TrustManager xtm = new MyTrustManager();
TrustManager mytm[] = {xtm};
SSLSocketFactory factory =null;
try{
SSLContext ctx = SSLContext.getInstance("SSL");
ctx.init(null,mytm, null);
factory = ctx.getSocketFactory();
}catch(KeyManagementException e2)
{
e2.printStackTrace();
}catch(NoSuchAlgorithmException e3)
{
e3.printStackTrace();
}
*/
Properties pro=System.getProperties();
pro.setProperty("https.proxyHost","172.25.75.2");
pro.setProperty("https.proxyPort","443");
SSLSocketFactory factory =(SSLSocketFactory)SSLSocketFactory.getDefault();
SSLSocket socket=null;
try{
socket =
(SSLSocket)factory.createSocket("72.5.124.61", 443); socket.startHandshake();
}catch(UnknownHostException e1)
{
e1.printStackTrace();
}catch(IOException e2)
{
e2.printStackTrace();
}
String getRequest = "GET /" + "index.html" + " HTTP/1.1";
String hostSpecification = "Host: " + "72.5.124.61";
System.out.println(getRequest);
System.out.println(hostSpecification);
try
{ PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream()))); out.println(getRequest);
out.println(hostSpecification);
out.println();
out.flush(); if (out.checkError())
System.out.println("SSLSocketClient: java.io.PrintWriter error"); /* read response */
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream())); String inputLine;
while ((inputLine = in.readLine()) != null)
{
System.out.println(inputLine);
} in.close();
out.close();
socket.close(); }
catch(Exception e)
{
e.printStackTrace();
}
}
}
//////////////////////////////////////////////////////////////////////////////
异常:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:507)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:546)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:349)GET /index.html HTTP/1.1
Host: 72.5.124.61 at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:69)
at SSLTest.main(SSLTest.java:51)
java.lang.NullPointerException
at SSLTest.main(SSLTest.java:77)
to amozon() 必须手动导入服务器证书 到证书库吗?
如果不知道服务器的证书 怎么办?
用程序的话,好像要导入到keystore里面。具体我也记不清楚了。不好意思
pro.setProperty("https.proxyPort","443");你这个使用了代理服务器,是不是代理服务器有问题啊。
原因是网络的问题
现在可以读出页面出来了 但是如果过通过代理连接 在程序当中该怎样实现呢?
下面是我的另一个帖子.
http://community.csdn.net/Expert/TopicView3.asp?id=5055384
能不能帮忙看哈