我在使用R中的DELETE
个请求时遇到问题。我已成功使用以下代码发出GET
和POST
个请求。任何帮助/指针将不胜感激。
需要api.key
,secret
&来自GDAX的passphrase
工作。
这是我的功能:
library(RCurl)
library(jsonlite)
library(httr)
library(digest)
cancel_order <- function(api.key,
secret,
passphrase) {
api.url <- "https://api.gdax.com"
#get url extension----
req.url <- "/orders/"
#define method----
method = "DELETE"
url <- paste0(api.url, req.url)
timestamp <-
format(as.numeric(Sys.time()), digits = 13) # create nonce
key <- base64Decode(secret, mode = "raw") # encode api secret
#create final end point----
what <- paste0(timestamp, method, req.url)
#create encoded signature----
sign <-
base64Encode(hmac(key, what, algo = "sha256", raw = TRUE)) # hash
#define headers----
httpheader <- list(
'CB-ACCESS-KEY' = api.key,
'CB-ACCESS-SIGN' = sign,
'CB-ACCESS-TIMESTAMP' = timestamp,
'CB-ACCESS-PASSPHRASE' = passphrase,
'Content-Type' = 'application/json'
)
##------------------------------------------------
response <- getURL(
url = url,
curl = getCurlHandle(useragent = "R"),
httpheader = httpheader
)
print(rawToChar(response)) #rawToChar only on macOS and not on Win
}
我得到的错误是"{\"message\":\"invalid signature\"}"
,即使相同的命令将代码和签名将与GET
&amp; POST
。
参考: GDAX API DOCs
答案 0 :(得分:0)
只是一个猜测因为我不熟悉API,但也许你错过了&#39; order-id&#39; ...
答案 1 :(得分:0)
确定。我根据他对requestbin的反馈,接受了@ mrflick的建议并指出我与different but related question的联系。
经过仔细检查后,我意识到由于某种原因我的请求被视为POST
请求,而不是DELETE
请求。因此,我决定将getURL
函数替换为RCurl
中的另一个更高级函数,以使其正常工作。
response <- httpDELETE(
url = url,
curl = getCurlHandle(useragent = "R"),
httpheader = httpheader
)
其他一切都是一样的。显然,签名从未出现过问题。
我现在已将此功能添加到我的非官方包装rgdax
修改:: 强>
非正式的包装现在是正式的,并且在CRAN上。