class MainActivity : AppCompatActivity() {
val mBtn by lazy {
btn_send
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//点击监听
mBtn.onClick {
//子线程请求
sendUrl()
}
}
var sendUrl = {
doAsync {
//创建SSL上下文对象
val sslContext = SSLContext.getInstance("TLS")
val tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
val ks =KeyStore.getInstance(KeyStore.getDefaultType())
ks.load(null)
val cf =CertificateFactory.getInstance("X.509")
val open = assets.open("twd.cer")
val cert = cf.generateCertificate(open)
ks.setCertificateEntry("twd",cert)
tmf.init(ks)
val tm = tmf.trustManagers
sslContext.init(null,tm,null)
val url =URL("https://192.168.1.178:8443/test.json")
var conn:HttpsURLConnection = url.openConnection() as HttpsURLConnection
//使用信任管理器
conn.sslSocketFactory = sslContext.socketFactory
//设置主机名校验
conn.hostnameVerifier = MyHostnameVerifier()
val ins = conn.inputStream
val bos = ByteArrayOutputStream()
var buffer = ByteArray(1024)
var len = 0
len = ins.read(buffer)
while (len!=-1){
bos.write(buffer,0,len)
len = ins.read()
}
val result = bos.toString()
bos.close()
runOnUiThread {
toast("服务器返回结果$result")
}
}
}
}
private class MyHostnameVerifier : HostnameVerifier {
override fun verify(hostname: String?, session: SSLSession?): Boolean {
return true
}
}
kotlin用https请求
最新推荐文章于 2024-06-25 23:22:56 发布