kotlin用https请求

来源:互联网 发布:怎么注销手机淘宝账号 编辑:程序博客网 时间:2024/06/07 02:03
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        }    }

原创粉丝点击