You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何使用OkHttp发送纯文本作为请求体?

解决OkHttp发送纯文本POST请求的问题

OkHttp完全支持发送纯文本请求体,你只是没用到正确的API——post()方法需要传入RequestBody类型的参数,而非直接传字符串。以下是修正后的Kotlin代码:

val myBody = "my own body text that my server understands"
// 定义纯文本的MediaType,指定编码格式
val mediaType = MediaType.parse("text/plain; charset=utf-8")!!
// 将字符串转换为RequestBody对象
val requestBody = RequestBody.create(mediaType, myBody)

val request = Request.Builder()
    .url(myUrl)
    .post(requestBody) // 传入正确的RequestBody实例
    .build()

okHttpClient.newCall(request).enqueue(object : Callback {
    override fun onFailure(call: Call, e: IOException) {
        // 处理请求失败逻辑
    }

    override fun onResponse(call: Call, response: Response) {
        // 处理响应逻辑
        response.use {
            if (!it.isSuccessful) throw IOException("Unexpected code $it")
            val responseContent = it.body?.string()
        }
    }
})

如果使用OkHttp 4及以上版本,RequestBody.create()已被标记为过时,可以改用更简洁的扩展函数写法:

val requestBody = "my own body text that my server understands"
    .toRequestBody("text/plain; charset=utf-8".toMediaTypeOrNull())

替代方案(若不想使用OkHttp)

如果确实需要更换HTTP客户端,可以用Java原生的HttpURLConnection实现纯文本POST请求:

val url = URL(myUrl)
val connection = url.openConnection() as HttpURLConnection

connection.requestMethod = "POST"
connection.setRequestProperty("Content-Type", "text/plain; charset=utf-8")
connection.doOutput = true

// 写入纯文本请求体
val outputStream = connection.outputStream
outputStream.write(myBody.toByteArray(Charsets.UTF_8))
outputStream.flush()
outputStream.close()

// 获取响应内容
val responseCode = connection.responseCode
val responseBody = if (responseCode == HttpURLConnection.HTTP_OK) {
    BufferedReader(InputStreamReader(connection.inputStream)).use { it.readText() }
} else {
    BufferedReader(InputStreamReader(connection.errorStream)).use { it.readText() }
}

connection.disconnect()

内容的提问来源于stack exchange,提问作者abcjeff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:30:01