kotlin用https请求

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
        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值