1. 引入okhttp依赖
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
2. 编写工具类
object HttpUtils {
private val client = OkHttpClient()
fun postStream(url: String, call: (OutputStream) -> Unit) {
val mediaType = "application/octet-stream".toMediaTypeOrNull()
val requestBody = object : RequestBody() {
override fun contentType() = mediaType
override fun writeTo(sink: BufferedSink) {
call(sink.outputStream())
}
}
val request = Request.Builder()
.url(url)
.post(requestBody)
.build()
val body = client.newCall(request).execute().body
if (body != null) {
Log.i("okhttp", body.string())
}
}
}
3. 使用
拿Android中的Bitmap为例,其他需要直接操作OutputStream同理
// 推送图片流到指定url
HttpUtils.postStream("http://192.168.31.13:8080/up/img") { out ->
// 将bitmap压缩成jpg,写入到输出流中
bmp.compress(Bitmap.CompressFormat.JPEG, 100, out)
}