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

Python requests转R httr实现pKa预测API调用失败求助

问题解决:R httr调用pKa API返回500错误的修复方案

错误根源

你遇到的500错误和AttributeError: 'NoneType' object has no attribute 'filename',本质是请求格式不匹配:

  • Python的requests.post(files={'Smiles': ('tmg', 分子Smiles串)})是发送multipart/form-data格式的请求,把Smiles字段模拟成一个名为tmg的文本文件上传。
  • 你用R转成JSON格式发送后,服务器后端代码找不到预期的文件字段的filename属性,导致解析失败。

正确的R httr实现代码

直接模拟Python的multipart/form-data请求即可,不需要用JSON:

library(httr)

# 替换成实际的API地址
api_url <- "https://your-pka-api-url.com"
# 替换成你的分子Smiles串
target_smiles <- "CCO"

# 构造模拟文件上传的表单字段
request_body <- list(
  Smiles = upload_file(
    content = target_smiles,
    type = "text/plain",
    name = "tmg"  # 必须和Python里的文件名保持一致
  )
)

# 发送POST请求
response <- POST(api_url, body = request_body, encode = "multipart")

# 查看响应结果
print(content(response, "text"))

补充说明

如果upload_file因为临时文件权限问题报错,可以改用curl::form_file直接传递字符串:

library(httr)
library(curl)

api_url <- "https://your-pka-api-url.com"
target_smiles <- "CCO"

request_body <- list(
  Smiles = form_file(
    path = I(target_smiles),  # I()标记为原始字符串,不转义
    type = "text/plain",
    name = "tmg"
  )
)

response <- POST(api_url, body = request_body, encode = "multipart")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:12:10