请求获取Anbima Access Token时的请求体格式问题求助
解决Anbima Access Token请求体格式问题
问题根源
你当前定义body_anbima的方式是错误的,{"grant_type:client_credentials"}不是合法的R对象,也不符合API要求的JSON结构。API需要的是包含键值对的JSON对象,而非字符串或错误语法结构。
修正后的代码
直接在R中构造列表对象,配合httr的encode='json'参数即可生成正确请求体:
library(httr) library(jsonlite) # 生成Basic认证的base64编码 token_anbima <- base64_enc("aC2yaac23:1bhS45TT") # 正确构造请求体:用R列表表示键值对 body_anbima <- list(grant_type = "client_credentials") # 发送POST请求 res <- POST('https://api.anbima.com.br/oauth/access-token', add_headers(Authorization = paste("Basic", token_anbima)), # encode='json'会自动处理Content-Type和JSON转换,无需手动设置请求头 body = body_anbima, encode = 'json', verbose() ) # 查看响应结果 res rawToChar(res$content)
关键说明
- 用R的
list()构造键值对,httr的encode='json'参数会自动将列表转换为符合要求的JSON格式,同时自动设置正确的Content-Type: application/json请求头,无需手动添加。 - 避免手动拼接JSON字符串(比如
"{\"grant_type\":\"client_credentials\"}"),这种方式易出现语法错误,维护性差。 - 如果一定要用
jsonlite::toJSON,写法应为toJSON(list(grant_type = "client_credentials"), auto_unbox = TRUE),但配合encode='json'时,直接传列表更简洁。
内容的提问来源于stack exchange,提问作者Carlos Eduardo Barros
相关产品推荐
相关产品推荐

