使用RCurl调用含多引号与括号的API出现内部服务器错误求助
问题解决:API请求内部服务器错误修复
你的R代码核心问题是JSON请求体构造错误,手动添加[和]会生成不符合API要求的格式,导致服务器无法解析返回500错误。
修正后的RCurl代码
直接给Symbols传入字符向量,toJSON会自动将其转换为标准JSON数组:
library(RCurl) library(RJSONIO) # 构造正确的JSON请求体 json_payload <- toJSON(list(Symbols = c("FLDB", "APOE"))) # 发送POST请求 response <- postForm( "https://toppgene.cchmc.org/API/lookup", .opts = list( postfields = json_payload, httpheader = c('Content-Type' = 'application/json') # 推荐使用标准的application/json类型 ) ) # 解析响应结果 parsed_result <- fromJSON(response) print(parsed_result)
错误原因说明
你原来的代码生成的JSON是:
{"Symbols":["[","FLDB","APOE","]"]}
而API实际需要的格式是:
{"Symbols":["FLDB","APOE"]}
格式不匹配导致服务器无法处理请求,返回内部错误。
更简洁的替代方案(使用httr包)
推荐使用更现代的httr包,它会自动处理JSON编码和请求头,代码更易维护:
library(httr) library(jsonlite) # 发送请求并自动处理JSON编码 response <- POST( url = "https://toppgene.cchmc.org/API/lookup", body = list(Symbols = c("FLDB", "APOE")), encode = "json" ) # 获取解析后的响应内容 content(response, "parsed")
内容的提问来源于stack exchange,提问作者user2167741
相关产品推荐
相关产品推荐

