java、kotlinはajax機能のパッケージを実現します。


前言
最近はプロジェクトを書きます。Androidの中でajaxをシミュレーションして要求を送ります。機能は複雑ではありません。java.net.HttpURLConnectを使ってこの機能を実現できます。
整理して、コードを下記のように簡潔にします。
kotlinバージョン
    /**
     * @Description:  ajax     ,     ,         ajax  
     * @Param:
     * @return:
     * @Author: Heiheihie
     * @Date: 19-8-26
     **/
    public fun ajax(
        url: String,
        type: String,
        data: ByteArray?,
        dataType: String?,
        contentType: String?,
        cache: Boolean
    ): ByteArray {
        var connection: HttpURLConnection? = null
        var reader: InputStream? = null
        var writer: OutputStream? = null
        val recdata: ByteArray

        try {
            var url = URL(url)
            connection = url.openConnection() as HttpURLConnection
            connection.requestMethod = type.toUpperCase()
            //         
            dataType?.let {
                connection.setRequestProperty("dataType", dataType)
            }
            contentType?.let {
                connection.setRequestProperty("Content-Type", "application/json")
            }
            connection.defaultUseCaches = cache
            connection.connectTimeout = 5 * 1000
            connection.readTimeout = 5 * 1000


            connection.connect()
            //GET         
            if (!"GET".equals(connection.requestMethod)) {
                writer = BufferedOutputStream(connection.outputStream)
                data?.let {
                    //     
                    writer.write(data)
                    writer.flush()
                }
            }

            reader = BufferedInputStream(connection.inputStream)
            //       
            recdata = reader.readBytes()

        } catch (e: IOException) {
            e.printStackTrace()
            return byteArrayOf()
        } catch (ex: Exception) {
            ex.printStackTrace()
            return byteArrayOf()
        } finally {
            reader?.let {
                try {
                    it.close()
                } catch (exInner: Exception) {
                    exInner.printStackTrace()
                }
            }
            writer?.let {
                it.close()
            }

            connection?.disconnect()
        }

        return recdata
    }
javaバージョンのコードは参考にして書き換えられます。
使用例
	//url ajax    mapper  ,msg        
    fun ajax_post_unknow(url: String, msg: String): String {
        var rec = ajax(url, "POST", msg.toByteArray(), "json", null, false)
        return rec.toString(Charset.defaultCharset())
    }
なお、文字列データを受信するときは、Bytearray.toString()を直接使用して、@xxxxのフィールド情報を得ています。正しいやり方はByteAray.toString(Charett.default Charer()を使用しています。具体的にはどの文字コードのフォーマットが必要ですか?同じように、データを送る場合は、文字列msg.toBytearray(Charett.default Charrset())に対しても、同様に自分の工程の状況に応じて確定する必要があります。