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

使用R语言httr包发送JSON格式POST请求返回异常如何解决?

解决方案

核心问题原因

该接口是ASP.NET WebForm后端服务,除了请求体格式要求外,还会校验请求是否为异步AJAX请求,未通过校验时会直接返回HTML页面而非预期JSON数据。

可运行完整代码

library(httr)
library(jsonlite)

# 目标接口地址
url <- "https://www.rad.cvm.gov.br/ENET/frmConsultaExternaCVM.aspx/ListarDocumentos"

# 请求参数
payload <- list(
    dataDe = '', 
    dataAte = '' , 
    empresa = '', 
    setorAtividade = '-1', 
    categoriaEmissor = '-1', 
    situacaoEmissor = '-1', 
    tipoParticipante = '-1', 
    dataReferencia = '', 
    categoria = 'EST_3', 
    periodo = '1', 
    horaIni = '', 
    horaFim = '', 
    palavraChave = '',
    ultimaDtRef = 'false', 
    tipoEmpresa = '0'
)

# 发送POST请求
r <- POST(
  url = url,
  # 配置必填请求头
  add_headers(
    `X-Requested-With` = "XMLHttpRequest",
    `Accept` = "application/json, text/javascript, */*; q=0.01"
  ),
  # 传入参数列表,指定json编码自动处理序列化和请求头
  body = payload,
  encode = "json"
)

# 解析返回结果
result <- content(r, "parsed")
# ASP.NET WebMethod默认将业务数据封装在d字段中
business_data <- result$d

关键调整说明

  • 新增X-Requested-With请求头,值固定为XMLHttpRequest,标识当前是异步AJAX请求,通过后端校验
  • 直接传递list类型参数给body,设置encode = "json",httr会自动完成JSON序列化,同时正确配置Content-Type: application/json请求头,无需手动调用toJSON和content_type_json
  • 返回结果的实际业务数据存储在d字段中,这是ASP.NET WebMethod的标准返回格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:54:04