因为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}")
}
}
可以看到可以成功像仓库里添加内容了: