本文整理汇总了Scala中javax.net.ssl.X509TrustManager类的典型用法代码示例。如果您正苦于以下问题:Scala X509TrustManager类的具体用法?Scala X509TrustManager怎么用?Scala X509TrustManager使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了X509TrustManager类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。
示例1: InsecureClient
//设置package包名称以及导入依赖的类
package uk.gov.hmrc.utils
import com.sun.jersey.api.client.{Client, ClientResponse}
import org.json4s.jackson.Serialization._
import javax.ws.rs.core.MediaType
import javax.net.ssl.{HostnameVerifier, SSLContext, SSLSession, X509TrustManager}
import com.sun.jersey.api.client.config.DefaultClientConfig
import com.sun.jersey.client.urlconnection.HTTPSProperties
import java.security.cert.X509Certificate
import com.sun.jersey.api.client.filter.GZIPContentEncodingFilter
class InsecureClient {
implicit val defaultFormats = json.JsonExtraction.formats
private val jsonContentType = MediaType.APPLICATION_JSON + ";charset=utf-8"
private val sslContext = SSLContext.getInstance("SSL")
sslContext.init(null, Array(new InsecureTrustManager), null)
private val config = new DefaultClientConfig()
config.getProperties.put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(
new HostnameVerifier() {
override def verify(s: String, sslSession: SSLSession): Boolean = true
},
sslContext
))
private val client = Client.create(config)
client.addFilter(new GZIPContentEncodingFilter(false))
def get[A](url: String)(implicit m: Manifest[A]): A = {
val response = client.resource(url).accept(jsonContentType).get[ClientResponse](classOf[ClientResponse])
val responseBody = response.getEntity(classOf[String])
println(s"TARGET = $url")
response.getStatus match {
case 200 => read[A](responseBody)
case _ => throw new RuntimeException(s"Unexpected response from $url, status code ${response.getStatus} : $responseBody")
}
}
def getRawResponse(url: String, contentType: String = jsonContentType)(implicit m: Manifest[String]): (Int, String) = {
val response = client.resource(url).accept(contentType).get[ClientResponse](classOf[ClientResponse])
val responseBody = response.getEntity(classOf[String])
val status = response.getStatus
(status, responseBody)
}
}
class InsecureTrustManager extends X509TrustManager {
def checkClientTrusted(p1: Array[X509Certificate], p2: String) {}
def checkServerTrusted(p1: Array[X509Certificate], p2: String) {}
def getAcceptedIssuers: Array[X509Certificate] = Array()
}
示例2: HttpClientProvider
//设置package包名称以及导入依赖的类
package org.zalando.react.nakadi.client.providers
import java.security.SecureRandom
import java.security.cert.X509Certificate
import javax.net.ssl.{SSLContext, TrustManager, X509TrustManager}
import akka.actor.ActorContext
import akka.http.scaladsl.Http.OutgoingConnection
import akka.http.scaladsl.model.{HttpRequest, HttpResponse}
import akka.http.scaladsl.settings.ClientConnectionSettings
import akka.http.scaladsl.{Http, HttpsConnectionContext}
import akka.stream.scaladsl.Flow
import scala.concurrent.Future
import scala.concurrent.duration._
class HttpClientProvider(actorContext: ActorContext,
server: String, port: Int,
isConnectionSSL: Boolean = false,
acceptAnyCertificate: Boolean = false,
connectionTimeout: FiniteDuration) {
val http = Http(actorContext.system)
private val settings = {
ClientConnectionSettings
.apply(actorContext.system)
.withConnectingTimeout(connectionTimeout)
.withIdleTimeout(Duration.Inf)
}
val connection: Flow[HttpRequest, HttpResponse, Future[OutgoingConnection]] = {
isConnectionSSL match {
case true =>
val sslContext = if (!acceptAnyCertificate) SSLContext.getDefault else {
val permissiveTrustManager: TrustManager = new X509TrustManager() {
override def checkClientTrusted(chain: Array[X509Certificate], authType: String): Unit = {}
override def checkServerTrusted(chain: Array[X509Certificate], authType: String): Unit = {}
override def getAcceptedIssuers(): Array[X509Certificate] = Array.empty
}
val ctx = SSLContext.getInstance("TLS")
ctx.init(Array.empty, Array(permissiveTrustManager), new SecureRandom())
ctx
}
http.outgoingConnectionHttps(server, port, new HttpsConnectionContext(sslContext), settings = settings)
case false =>
http.outgoingConnection(server, port, settings = settings)
}
}
}