如何在R语言调用REST API时传递参数 附httr包POST请求示例
问题原因与修复方案
核心错误点
- R语言中定义列表键值对使用
=赋值,不支持JSON语法中的:分隔符 - 嵌套的数组、对象结构不能直接写JSON格式的
[]/{},需要用list()函数嵌套定义 - 你当前声明的Content-Type为text/plain,但传递的是结构化JSON参数,需要调整对应头信息,同时给POST请求添加
encode = "json"参数自动序列化请求体
修复后代码
library(httr) r <- POST( "https://XXXXXXXX/api/locationhazardInfo", add_headers( "Content-Type" = "application/json; charset=UTF-8", Accept = "application/json", "Authorization" = paste("Bearer", tok) ), body = list( Latitude = 40.738269, Longitude = -74.02826, CountryCode = "USA", HazardLayers = list( list( LayerId = "18", Description = "" ), list( LayerId = "6", Description = "" ) ), Distances = list( list( Value = 1, Unit = "miles" ) ) ), encode = "json" )
结果验证
请求发送后可通过以下代码检查返回结果:
- 查看响应状态码:
status_code(r),返回200代表请求正常 - 解析返回内容:
content(r, "text")可查看原始返回值,content(r, "parsed")可自动将JSON返回值转为R列表
内容的提问来源于stack exchange,提问作者Phlybo
相关产品推荐
相关产品推荐

