我正在尝试使用grails中的groovy toURL()
方法发出http请求:
def holidayApiUrl = "https://holidayapi.com/v1/holidays?key=${apiKey}&year=2016&country=US"
def holidayJson = JSON.parse(holidayApiUrl.toURL().text)
您可以从holidayapi.com获取api密钥以复制此错误。
以上请求提供
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
所以我正在寻找在groovy中完全忽略ssl错误的方法。但是无法得到它。
其他SO帖子提示this之类的东西,但groovy的toURL不使用SSLContext。那么可以使用toURL()来忽略ssl错误吗?
修改
任何想要测试上面代码片段的人都可以免费注册holidaypi.com并获取api密钥。在浏览器中命中时,上面的url(用api键替换)给出了正确的json。但是上面的代码在groovy中执行时会出现SSL错误。
答案 0 :(得分:-1)
为了使用Groovy处理JSON,一个对我有用的更好的方法是使用groovy.json.JsonSlurper
类。使用JsonSlurper
修改后的代码版本应该有效:
import groovy.json.*
def holidayApiUrl = "https://holidayapi.com/v1/holidays?key=${apiKey}&year=2016&country=US".toURL()
//Returns an instance of a Map
def holidayJson = new JsonSlurper().parse(holidayApiUrl)
//Make it pretty and print
println JsonOutput.prettyPrint(JsonOutput.toJson(holidayJson))