1
我需要進行握手。我用下面的代碼來做。SSLSocketFactory.createSocket使用http連接而不是https
我正在applet中運行代碼,並且在直接對服務器運行時工作正常。當通過代理運行相同的代碼時,會出現問題。 我在跟蹤級別5激活的Java控制檯中查找。直接在代碼行「SSLSocket socket =(SSLSocket)factory.createSocket(」www.theserver.com「,443);」被執行 這一行出現在java控制檯「網絡:連接http://www.theserver.com:443與代理=直接」。在此之後,小程序停止工作。我認爲這是因爲 代理將不會允許端口443上的http通信。
任何人都可以告訴我爲什麼它使用http連接,我應該怎麼做才能使用https連接?
import javax.net.ssl.HandshakeCompletedEvent;
import javax.net.ssl.HandshakeCompletedListener;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
public class Handshake
{
class MyHandshakeListener implements HandshakeCompletedListener
{
public void handshakeCompleted(HandshakeCompletedEvent e)
{
System.out.println("Handshake succesful!");
System.out.println("Using cipher suite: " + e.getCipherSuite());
}
}
public void DoHandshake()
{
try
{
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket("www.theserver.com", 443);
String[] suites = socket.getSupportedCipherSuites();
socket.setEnabledCipherSuites(suites);
socket.addHandshakeCompletedListener(new MyHandshakeListener());
socket.startHandshake();
}
catch (Exception e)
{
System.out.println(e);
}
}
}
我想我正在尋找相同的答案。 – 2013-07-26 18:48:50