我想在Grails中使用SSL验证向网址发帖。 我已经导入了证书,并且我已经生成了jks文件。 但似乎Grails没有找到那些jks文件。 下面是我正在执行的代码(它在Grails服务类中):
def certificate = "mycert.jks"
def http = new HTTPBuilder(url)
def keyStore = KeyStore.getInstance(KeyStore.defaultType)
getClass().getResource(certificate).withInputStream {
keyStore.load(it, "test1234".toCharArray())
}
http.client.connectionManager.schemeRegistry.register(new Scheme("https", new SSLSocketFactory(keyStore), 443))
错误是 “无法在null对象上调用withInputStream()方法” 所以 方法getResource()不起作用,并返回null。
我看到这个代码在functionalTest类中工作正常。
任何人都知道如何解决这个问题?
感谢!!!!!!!
答案 0 :(得分:2)
问题是来自grails-app/services
的非源文件未复制到类路径中。 src/java
就是这种情况,但不是src/groovy
。 grails-app/conf
的情况也是如此,但这是唯一发生这种情况的grails-app
文件夹,因为它是配置文件文件夹。
所以最好的办法是将文件移至grails-app/conf
并使用
Thread.currentThread().contextClassLoader.getResource(certificate).withInputStream {
keyStore.load(it, "test1234".toCharArray())
}