使用Scala Dispatch Library禁用SSL

时间:2012-09-25 16:14:02

标签: scala ssl https scala-dispatch

我目前正在将所有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?

2 个答案:

答案 0 :(得分: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) 

答案 1 :(得分:0)

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)

我在这里找到了这个:Why does dispatch throw "java.net.ConnectException: General SSLEngine ..." and "unexpected status" exceptions for a particular URL?