解决:把证书client.keystore和client.truststore不放在resources目录下,而是放在resources目录的下一个目录下,比如resources目录下的i18n,获取的方式就是getResourceAsStream("/i18n/client.keystore")。
这个问题困扰了我好久,有一周左右,怎末想也想不通,为什莫main方法调用就200,通过程序里的方法调用就400,方法里的代码一模一样,证书的位置也一模一样,百思不得其解,非常苦恼。是程序框架问题,导致编码不能正确识别,请求参数有问题,还是方法的参数,返回值,有问题。也都不可能啊,方法参数显示是正常的,不乱码,网上百度400,修改tomcat URIEncoding,也都不好使。把程序放到其他方法不好使,换浏览器也不好使。原来在controller层,然后放到新建的service层方法还不好使。把证书放到类的同包下还不好使,今天突然把证书放到resources下的目录下,就突然好使了,也不知道咋回事。解决了这个问题后感觉很激动!很开心!终于解决了这个问题!也为以后解决问题积累了信心,经验。增添了克服困难的必胜心、决心。
总结:遇到问题,想解决问题的思路,然后顺着这个思路多进行尝试。
解决问题思路总结:
思路一:查看代码,查看请求语法哪里有问题。
思路二:深挖程序代码含义,查找问题原因。
思路三:换浏览器。
思路四:百度400状态码。
思路五:询问同事。
思路六:询问代码提供第三方,寻求解决办法。