kotlin语言android中Base64编码与解码,使用github的api接口发送PUT请求和接收响应

文章讲述了如何利用Base64编码和解码处理GitHub接口中的内容,通过OKHTTP库发送请求,将内容以JSON格式编码并添加到GitHub仓库中。过程中涉及了响应解析、Header设置以及错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为github的接口中内容都是Base64编码的,响应中也是,所以需要Base64编码和解码操作。

Base64编码:

var content = Base64.encodeToString(stringStr.toByteArray(), Base64.DEFAULT)

Base64解码:

val gitContent = Base64.decode(githubContent.content, Base64.DEFAULT).decodeToString()

将响应体转化为Json:

val responseData = response.body?.string()
val resJson = JSONObject(responseData)
val token = resJson.getString("token")

使用OKHTTP发送请求:

fun postCookieToGit(title: String, conten: String, type: String) {
        // 随机生成一个
        val uuid = UUID.randomUUID().toString().replace("-", "")
        val jsonObject = JSONObject()
        jsonObject.put("message", uuid)
        jsonObject.put("content", Base64.encodeToString(conten.toByteArray(), Base64.DEFAULT))
        val jsonStr = jsonObject.toString()
        val requestBody = jsonStr.let {
            //创建requestBody 以json的形式
            val contentType: MediaType = "application/json".toMediaType()
            jsonStr.toRequestBody(contentType)
        }
        val request = Request.Builder()
            .url("${gitSource}/.github/${type}/${uuid}.txt")
            .header("Authorization", gitToken)
            .put(requestBody)
            .build()
        val newCall = client.newCall(request)
        try {
            newCall.enqueue(
                object : Callback {
                    override fun onFailure(call: Call, e: IOException) {
                        println("发送Cookie失败:错误信息是:${e.message}")
                    }

                    override fun onResponse(call: Call, response: Response) {
                        val responseData = response.body?.string()
                        println("发送Cookie成功了")
                        if (responseData != null) {
                            val resJson = JSONObject(responseData)
                            // val token = resJson.getString("token")
                            println(resJson)
                        }
                    }
                }
            )
        } catch (e: Exception) {
            println("调用接口失败:错误信息是:${e.message}")
        }
    }

可以看到可以成功像仓库里添加内容了:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024小神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值