【问题标题】:Posting to and Receiving data from API using httr in R在 R 中使用 httr 向 API 发送和接收数据
【发布时间】:2023-03-10 08:08:01
【问题描述】:

我正在尝试访问美国人口普查地理编码器批处理地址 API,可在此处找到:http://geocoding.geo.census.gov/geocoder/

我还在这里浏览了 API 的文档:http://geocoding.geo.census.gov/geocoder/Geocoding_Services_API.pdf

我正在尝试使用 R 中的 httr 包使用以下格式发布格式化地址的批处理 csv 文件:唯一 ID、街道地址、城市、州、ZIP 我已经尝试使用来自 RCurl 的 getURL 的单一地址请求版本并且效果很好,但是 postForm 似乎没有以正确的方式提交文件。我现在使用的代码似乎正确地发布了请求,但我没有得到任何地理编码数据。

curlhandle <- handle("http://geocoding.geo.census.gov/geocoder/geographies/addressbatch", 
  cookies = TRUE)

# using fileUpload from RCurl instead of upload_file from httr
upload3  <- fileUpload(contents = address100, contentType = "file")

test <- POST(url="http://geocoding.geo.census.gov/geocoder/geographies/addressbatch", 
  body = list(addressFile = upload3,
         benchmark = "Public_AR_Census2010",
         vintage="Census2010_Census2010"), 
  encode = "multipart",
  handle = curlhandle, 
  followLocation = TRUE,
  verbose = TRUE)

我的请求是否遗漏了什么?我不确定在这种情况下是否应该使用 writefunction 和 writedata。任何帮助将不胜感激!

【问题讨论】:

  • 您遇到什么错误? address100 是什么?为什么你使用httr 而不是upload_file?尝试发帖到httpbin.org/post 看看您的请求是否正常。
  • 谢谢!我得到的内容(测试)将是一个单一的字符串,上面写着“可能不是空的”,这表明请求已通过但不知何故很糟糕,因此显示了空响应。我使用了 RCurl 的 fileUpload,因为 upload_file 似乎只接受文件的路径,而我正在尝试上传 R 数据对象。

标签: r post httr


【解决方案1】:

您似乎有一个奇怪的 RCurl 和 httr 组合。这是我编写请求的方式:

req <- POST(
  "http://geocoding.geo.census.gov/geocoder/geographies/addressbatch", 
  body = list(
    addressFile = upload_file(address100),
    benchmark = "Public_AR_Census2010",
    vintage = "Census2010_Census2010"
  ), 
  encode = "multipart",
  verbose())
stop_for_status(req)
content(req)

(“文件”也不是有效的 mime 类型)

【讨论】:

  • 非常感谢!这似乎可行,除了我必须用保存的 csv 文件的路径替换 address100 。我尝试将 upload_file 与 R 中的对象一起使用,这将返回此错误:错误:is.character(path) is not TRUE。 upload_file 是否仅适用于文件的路径? RCurl 版本的 fileUpload 是我之前使用的,我认为它会提供相同的输出但接受 R 数据对象,但实际上当我尝试使用它时它不起作用。两者有什么区别?据我了解,upload_file 是 fileUpload 的包装器。
  • upload_file 的全部意义在于上传一个存在于磁盘上的文件。如果它不存在,它将无法工作。
猜你喜欢
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2020-02-09
相关资源
最近更新 更多