2017-12-28 38 views
0

R에서 DELETE 요청에 문제가 있습니다. 아래 코드를 사용하여 GETPOST 요청에 성공했습니다. 모든 도움/포인터를 주시면 감사하겠습니다.R GDAX-API 삭제 요청

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 
} 

오류가 같은 명령을 코딩하고 서명이 GET & POST와 함께 작동합니다 비록 "{\"message\":\"invalid signature\"}"입니다 :

여기 내 기능입니다.

참조 :GDAX API DOCs

답변

0

확인. 나는 @ mrflick의 조언을 받아 different but related question에 대한 그의 의견을 토대로 requestbin에 대한 나의 연결을 지적했다.

주의 깊게 조사한 후, 어떤 이유로 든 내 요청이 POST 요청으로 처리되었으며 DELETE 요청으로 처리되지 않음을 알았습니다. 그래서 getURL 함수를 RCurl의 다른 상위 함수로 바꾸기로했습니다.

response <- httpDELETE(
    url = url, 
    curl = getCurlHandle(useragent = "R"), 
    httpheader = httpheader 
) 

그 밖의 모든 것은 동일하게 유지됩니다. 분명히 서명 문제는 없었습니다.

내 비공식 래퍼 지금이 기능을 추가 한 rgdax

편집 :
비공식 래퍼가 지금 공식과 크랑에 있습니다.

0

그냥이 API에 익숙하지 않은,하지만 아마 당신은 '주문 ID를'누락으로 추측 ...에서

보기 : https://docs.gdax.com/?javascript#cancel-an-order

+0

두 개의 끝 점이 있습니다. 하나는 모두 취소하고 다른 하나는 주문을 취소합니다. 주문 ID를 놓친 경우 잘못된 요청이 있었을 것입니다. 유효하지 않은 서명이 아닙니다. – Drj