前段时间开发了一个https请求客户端
在线上联调一个https双向认证接口的时候 请求抛出如下异常
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext
connection?
具体的客户端的实现方式可移步看这篇文章 http://blog.csdn.net/dtlscsl/article/details/50118225
根据异常信息进行分析 查找了一些资料 这个问题通常出现在尝试用SSLSocket去连接一个http端口 所以跟客户端实现没有关系~
为了验证自己的判断 尝试在服务器主机上面使用curl -k命令直接请求对方接口地址端口
提示error:SSL routines:SSL23_GET_SERVER_HELLO:unknow protocol
这个异常信息是因为用SSL请求一个http服务导致的
为了进一步证实 我本机启动了tomcat服务 加载了一个web工程 里面有一个http Get请求接口
请求地址如下:
http://127.0.0.1:8080/gateway/resultNotify.do
响应一个json串
同样用curl命令测试http接口
1.curl
http://127.0.0.1:8080/gateway/resultNotify.do
用curl命令测试https接口,将原http请求协议改为https,实际上这个接口还是http服务
curl -k
https://127.0.0.1:8080/gateway/resultNotify.do
得出结论 Unrecognized SSL message, plaintext
connection?的异常是因为对方提供的不是https服务的端口