2013-12-18 92 views
4

所以基本上,我想要得到的RCurl相當於下面捲曲呼叫:頁眉和JSON數據RCurl POST請求

curl -H "AUTH-KEY: soanclCNdnLDcnlNc" -H "Content-Type: application/json" -X POST -d '{"documents":["http://localhost:3000/documents/2","http://localhost:3000/documents/4"]}' http://localhost:3000/documents/download?format=zip 

我設法得到這個東西,但它總是更大比捲曲調用所產生的並且不能被解壓縮,並且不能在我的生活中發現它是什麼。

x= list(items=c("http://localhost:3000/documents/2", "http://localhost:3000/documents4")) 
headers <- list('AUTH-KEY' = "soanclCNdnLDcnlNc", 'Accept' = 'application/json', 'Content-Type' = 'application/json') 
postForm("http://localhost:3000/documents/download?format=zip", .opts=list(postfields=toJSON(x), httpheader=headers)) 
+0

(1)在你的curl調用中你有「文檔」,但是在你的第一行R代碼中你有「items」。 (2)您是否確認'toJSON'給您正確的內容? – Thomas

+0

這在我看來實際上只是一個錯誤。事實證明,我正在處理我錯誤地回來的內容。我使用標準的write()R函數來寫入文件,而不是writeBin(),它生成了我想要的正確的zip文件。儘管歡呼 – crypts

回答

2

雖然現在有很多更好的套餐,但RCurl仍然有它的誠實工作。

一般在RCurl重新映射:

curl -H "AUTH-KEY: xxxx" \ 
    -H "Content-Type: "application/x-www-form-urlencoded" \ 
    -d '{"key1": "value1","key2": "value2"}' \ 
    "https://httpbin.org/post" 

(調整您的標題和字段相應)

您使用:

hdr=c(Authorization="xxxx", `Content-Type`="application/x-www-form-urlencoded") 
flds='{"key1": "value1","key2": "value2"}' 
postForm("https://httpbin.org/post", 
     .opts=list(httpheader=hdr, postfields=flds)) 

注意反引號爲Content-Type逃脫負。