You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决R中从证书过期的USCMP公开JSON API导入数据的问题?

解决R中导入USCMP API数据的SSL证书过期问题

问题分析

目标网站SSL证书已过期,且HTTP请求会被强制重定向到HTTPS,触发默认SSL验证拦截。Windows系统下的schannel SSL后端对证书过期限制更严格,仅关闭ssl_verifypeer和ssl_verifyhost不足以绕过验证。

可行解决方案

方案1:配置完整的SSL验证关闭选项

使用httr库添加ssl_verifystatus = FALSE参数,彻底关闭SSL相关验证:

library(httr)
library(jsonlite)

# 目标数据的HTTPS地址(HTTP会被重定向到HTTPS)
target_url <- "https://clustermapping.us/data/region/county/48321"

# 发送请求,关闭所有SSL验证项
response <- GET(
  target_url,
  config = list(
    ssl_verifypeer = FALSE,
    ssl_verifyhost = FALSE,
    ssl_verifystatus = FALSE
  )
)

# 验证请求成功后解析数据
if (http_status(response)$category == "Success") {
  raw_json <- content(response, "text")
  # 处理原数据可能的JSON格式问题(修复未包裹为数组的结构)
  formatted_json <- sprintf('[%s]', gsub('}{', '},{', raw_json, fixed = TRUE))
  result_data <- fromJSON(formatted_json)
  # 查看数据结构
  str(result_data)
} else {
  stop("请求失败:", http_status(response)$message)
}

方案2:切换到OpenSSL后端(若方案1无效)

Windows系统默认使用schannel,部分情况下需强制curl使用OpenSSL后端:

# 设置环境变量切换SSL后端
Sys.setenv(CURL_SSL_BACKEND = "openssl")

# 再次运行方案1中的请求代码

注意事项

  • 关闭SSL验证会降低请求安全性,仅在确认目标网站可信的情况下使用。
  • 若后续网站更新了SSL证书,建议恢复默认的SSL验证配置。

内容的提问来源于stack exchange,提问作者Charlie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:26:29