java web 使用https_java 使用Https 与Web 服务器通信

时间:2019-10-07

概述:Web服务器

java 使用Https 与Web 服务器通信,在 SSL 安全机制下我们经常用到Https 与Web 服务器通信。本例通过编程实现了连接一个安全的HTTP 服务器,发送一个简单的Get 请求,并打印出响应这样的简单通信功能。运行程序,运行此程序后本机连接一个安全的HTTP 服务器,发送Get 请求,并打印出响应这样的简单通信信息。

实现方法如下:使用 createSocket()方法从javax.net.ssl.SSLSocketFactory 类中构造一个java.net.Socket 对象。使用如下5 个重载的createSocket()方法来构建一个SSSLSocket 对象:

public abstract Socket createSocket(String host, int port)

throws IOException, UnknownHostException

public abstract Socket createSocket(InetAddress host, int port)

throws IOException

public abstract Socket createSocket(String host, int port,InetAddress interface, int localPort)

throws IOException, UnknownHostException

public abstract Socket createSocket(InetAddress host, int port,InetAddress interface, int localPort)

throws IOException, UnknownHostException

public abstract Socket createSocket(Socket proxy, String host, int port,boolean autoClose)

throws IOException

所有这些构造方法返回的都是javax.net.ssl.SSLSocket。程序代码编写如下:

1.编写HTTPSClient 类的基本框架,该类仅包括main()方法,在该方法中使用Https 与Web服务器通信。

2.编写HTTPSClient 类,代码如下:

import java.net.*;

import java.io.*;

import java.security.*;

import javax.net.ssl.*;

public class HTTPSClient

{

public static void main(String[] args)

{

if (args.length == 0)

{

System.out.println("Usage: java HTTPSClient host");

return;

}

int port = 443; // Https 的缺省服务端口

String host = args[0];

try

{

// 建立支持SSL的Socket工场

SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();

// 建立支持SSL的Socket

SSLSocket socket = (SSLSocket) factory.createSocket(host, port);

// 允许访问所有支持的站点

String[ ] supported = socket.getSupportedCipherSuites();

socket.setEnabledCipherSuites(supported);

// 在SSL上建立指向服务器的输出流

Writer out = new OutputStreamWriter(socket.getOutputStream());

// 通过Https构造并且发送一个完整的http请求

out.write("GET http://" + host + "/ HTTP/1.1\r\n");

out.write("\r\n");

out.flush();

// 取回响应

BufferedReader in = new BufferedReader(new

InputStreamReader(socket.getInputStream()));

int c;

while ((c = in.read()) != -1)

{

System.out.write(c);

}

// 关闭连接

out.close();

in.close();

socket.close();

}

catch (IOException e)

{

System.err.println(e);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值