4

我目前正在将我们所有的 Rest 测试移动到 CI 服务器,并注意到所有测试都由于 SSL 握手而失败,现在我已经使用我们的 Java 测试套件使用 TrustManager 成功禁用了这个,但我不确定如何使用 Scala 调度库来做到这一点,并且还没有找到许多可以适用于这种情况的示例。

val JSONstr = "{samplekey:samplevalue}"
val response:String = Http(url("https://www.host.com/path/to/post") 
                    << (checkInJSONstr, "application/json") as_str) 

按预期发生以下异常:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at     com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
...

有没有办法用调度库在语法上干净地忽略 SSL?

4

2 回答 2

6
import dispatch._
val http = new Http with HttpsLeniency
val response:String = http(url("https://www.host.com/path/to/post") 
                   << (checkInJSONstr, "application/json") as_str) 
于 2012-09-26T02:36:56.110 回答
1

viktortnk 的答案不再适用于最新版本的 Dispatch (0.13.2)。对于最新版本,您可以使用以下内容创建一个接受任何证书的 http 客户端:

val myHttp = Http.withConfiguration(config => config.setAcceptAnyCertificate(true))

然后你可以将它用于 GET 请求,如下所示:

myHttp(url("https://www.host.com/path").GET OK as.String)

我在这里发现了这一点:为什么 dispatch throw "java.net.ConnectException: General SSLEngine ..." and "unexpected status" exceptions for a specific URL?

于 2017-09-19T22:52:15.447 回答