首先贴上微信的开发api地址: https://www.w3cschool.cn/weixinapp/weixinapp-api-qrcode.html
第一步是按照api要求获取access_token.然后用这个access_token获取小程序圆形二维码的数据流.微信这里比较变态,直接把图片的流信息给返回回来了!
1.获取 access_token (注:appid secret在微信开发平台自己看,一般项目分享有集成的话就能在项目中看到)
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx000000000000&secret=a679d4a00000000000000000
2获取圆形二维码
https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token= ****
http请求注意事项(参数不支持表单模式):
val mOkHttpClient = OkHttpClient()
val json = MediaType.parse("application/json; charset=utf-8")
//参数不支持表单模式,直接以json字符串的形式传递
val jsonString: String = "{\"width\":430,\"path\":\"pages/livie/liveRoom\",\"scene\":\"pages\"}"
val requestBody = RequestBody.create(json, jsonString)
//这里需要把access_token直接拼接在url后面,post中放入上面json字符串参数requestBody
val request = Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=$access_token")
.post(requestBody).build()
val call = mOkHttpClient.newCall(request)
call.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
Log.e("请求失败")
}
@Throws(IOException::class)
override fun onResponse(call: Call, response: Response) {
//获取返回的数据流,直接转换位Drawable对象.imageview加载图片需要指定在主线程!
val inputStream = response.body()?.byteStream()
val fromStream = Drawable.createFromStream(inputStream, "wechatqrcode")
runOnUiThread { iv_wx_code.setImageDrawable(fromStream) }
}
})