我正在尝试下载从 HTTP POST 调用返回的文件(到我无法控制的 API)。
我有以下curl命令,它可以执行我想要执行的操作,在请求中提交自定义json有效负载并将文件下载到foo.pdf。
curl -X 'POST' \
'http://localhost/requestDownloadFile' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{APPLICATION_JSON_REQUEST_PAYLOAD}
--output foo.pdf'
所以在 R 中我已经成功地让它工作了
system2("curl", "-X 'POST' 'http://localhost/requestDownloadFile' -H 'accept: */*' -H 'Content-Type: application/json' -d '{APPLICATION_JSON_REQUEST_PAYLOAD}' --output foo.pdf")
但是我添加的其余代码使用
httr::POST
进行非文件下载,看起来更干净一些。
我的问题是,我可以使用
httr::POST
函数实现相同的目标吗?我没有得到返回给我的文件内容,所以我需要以某种方式传递与curl的output
参数相当的内容。
谢谢@r2evans,这正是我正在寻找的。
为了在我原来的问题的背景下回答我的问题,这对我有用:
postResponse <- httr::POST(http://localhost/requestDownloadFile, httr::write_disk("foo.pdf", overwrite=TRUE), body = '{APPLICATION_JSON_REQUEST_PAYLOAD}',httr::content_type_json(), httr::accept("*/*"))