R GDAX-API 删除请求
R GDAX-API Delete Request
我在 R 中处理 DELETE
请求时遇到问题。我已使用以下代码成功发出 GET
和 POST
请求。任何帮助/指点将不胜感激。
它需要来自 GDAX 的 api.key
、secret
和 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
& POST
。
参考: GDAX API DOCs
只是猜测,因为我不熟悉 API,但也许您错过了 'order-id' ...
好的。我接受了@mrflick 的建议并将我的连接指向 requestbin based on his feedback on a .
仔细检查后,我意识到我的请求由于某种原因被视为 POST
请求而不是 DELETE
请求。所以我决定用 RCurl
中的另一个更高级别的函数替换 getURL
函数以使其工作。
response <- httpDELETE(
url = url,
curl = getCurlHandle(useragent = "R"),
httpheader = httpheader
)
其他一切都保持不变。显然签名从来没有问题。
我现在已将此功能添加到我的非官方包装器中 rgdax
编辑::
非官方的包装器现在是官方的并且在 CRAN 上。
我在 R 中处理 DELETE
请求时遇到问题。我已使用以下代码成功发出 GET
和 POST
请求。任何帮助/指点将不胜感激。
它需要来自 GDAX 的 api.key
、secret
和 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
& POST
。
参考: GDAX API DOCs
只是猜测,因为我不熟悉 API,但也许您错过了 'order-id' ...
好的。我接受了@mrflick 的建议并将我的连接指向 requestbin based on his feedback on a
仔细检查后,我意识到我的请求由于某种原因被视为 POST
请求而不是 DELETE
请求。所以我决定用 RCurl
中的另一个更高级别的函数替换 getURL
函数以使其工作。
response <- httpDELETE(
url = url,
curl = getCurlHandle(useragent = "R"),
httpheader = httpheader
)
其他一切都保持不变。显然签名从来没有问题。
我现在已将此功能添加到我的非官方包装器中 rgdax
编辑::
非官方的包装器现在是官方的并且在 CRAN 上。