使用groovy的toURL方法忽略SSL错误

时间:2017-01-04 15:55:16

标签: java ssl grails groovy

我正在尝试使用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错误。

1 个答案:

答案 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))