读书人

https异常总结

发布时间: 2012-12-28 10:29:05 作者: rapoo

https错误总结

1.javax.net.ssl.SSLHandshakeException:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

?

原因:服务器的证书不被信任。一般是这样造成的。

?

解决办法,

1.导入办法:

打开命令行窗口,并到<java-home>\lib\security\ 目录下,运行下面的命令:

?

也有可能是证书的问题。

?

5.?java.net.UnknownHostException

?

服务端地址不对。

?

6.java.net.SocketException: Unexpected end of file from server

?

这个异常说明数据已经发送成功。有可能服务端是防火墙的原因,没有处理客户端发来的数据。也有可能是客户端的数据不符合要求,服务端没有做出响应。数据不符合要求可能是传送的数据含有奇怪的字符。也有可能是两边编码不一致导致。客户端将字符串变成字节数据传送时需要指定编码格式,如str.getBytes("UTF-8");如不指定,可能导致上面的错误。另外有人说当URL过长时也会发生此错误,当使用URL发送数据时,可以参考此意见。

?

在我们与平安做接口时,碰到这个Unexpected end of file from server诡异的错误。但大致原因可以确定是服务端(平安)对我们发送过去的数据没有处理。具体的原因有下:

我们的系统是UTF-8编码的,他们是GBK编码的。编码不一致导致错误。另外传输消息时最好设定编码格式,如str.getBytes("UTF-8")。

但这样处理后还是出问题。那就是测试环境可以成功,而线上环境不能成功。查了很久也查不到原因,最后弄一个和测试环境一样的服务器,专门来放接口才解决问题。

?

对于最后这个问题,可能原因如下:

a. 线上环境做了某种限制,使证书信息不能发送出去。

b。线上环境的外网出口IP和测试环境外网出口IP不同。或许平安会将第一次发送证书时,IP和证书记住。如果下次IP和证书有一项不符合,则认为无效,不给回应。我们先在测试环境上发送成功,平安记住了IP和证书。然后在线上环境发送时,由于IP不同,平安认为证书无效,不给回应。

?

?

7.java.io.IOException:server returned HTTP response code :500

?

?

这个异常是服务端代码的问题。服务端相应代码执行时抛出了异常。

?

?

最后 如果返回的状态码是200 ,表示成功。

读书人网 >编程

热点推荐