2017-12-07 4 views
0

Ich versuche, GDAX mit R zu treffen und das folgende Problem zu bekommen. Wie löse ich das Problem mit httr.R httr GET Anfrage 400 Fehler GDAX

Response [https://api-public.sandbox.gdax.com/accounts] 
    Date: 2017-12-07 20:30 
    Status: 400 
    Content-Type: application/json; charset=utf-8 
    Size: 53 B 

Unten ist mein Code. Bitte beachten Sie, dass das Problem nur mit httr Paket vorhanden ist und nicht mit RCurl (Code im Anhang zur Verfügung gestellt)

library(digest) 
library(httr) 
library(RCurl) # for base64Decode 

url <- "https://api-public.sandbox.gdax.com/accounts" 
secret <- # API secret from GDAX sandbox 
api.key <- # API key from GDAX sandbox 
passphrase <- # API passphrase from GDAX sandbox 

timestamp <- format(as.numeric(Sys.time()), digits=13) # create nonce 
key <- base64Decode(secret, mode="raw") # encode api secret 
what <- paste0(timestamp, "GET", req.url) 
sign <- base64Encode(hmac(key, what, algo="sha256", raw=TRUE)) 

connector <- list(url = url, nonce = timestamp, signature = sign)) 

GET(url=connector$url, 
    add_headers(
    'CB-ACCESS-KEY'=api.key, 
    'CB-ACCESS-SIGN'=connector$signature, 
    'CB-ACCESS-TIMESTAMP'=connector$nonce, 
    'CB-ACCESS-PASSPHRASE'=passphrase, 
    'Content-Type'='application/json' 
) 
) 

Wenn ich jedoch verwende RCurl dann den folgenden Code einen Antwortinhalt Ich bin in der Lage zu erhalten verwenden.

httpheader <- list('CB-ACCESS-KEY'=api.key, 
    'CB-ACCESS-SIGN'=sign, 
    'CB-ACCESS-TIMESTAMP'=timestamp, 
    'CB-ACCESS-PASSPHRASE'=passphrase, 
    'Content-Type'='application/json') 

connector <- list(url = url, header = httpheader) 

getURLContent(url = connector$url, 
    curl=getCurlHandle(useragent="R"), 
    httpheader=connector$header) 
+1

Verwenden Sie beide Code-Typen, um auf eine Site wie https://requestb.in/ zu zeigen, damit Sie sehen können, was tatsächlich an den Server gesendet wird, um zu sehen, was anders sein könnte. – MrFlick

+0

Woher kommt die Funktion 'base64Decode'? – MrFlick

+0

'RCurl' aber es ist ein guter Ruf. Ich hatte den Eindruck, dass es eine "Digest" -Funktion war. Ich werde dies angehen müssen, sobald die Verbindung mit 'httr' hergestellt wurde. – Drj

Antwort

0

Wenn die Sandbox nicht wiederhergestellt wurde (ich habe keine Info, um es zu sagen), wurde sie Anfang 2017 mit sehr wenig Kommunikation stillgelegt und ist, soweit ich weiß, noch immer auf dieses Datum. Ich dokumentierte dies auf der gdax-java Lib.

+0

Das macht Sinn. Ich war in der Lage, den Code auf 'GDAX' zu bekommen, aber nicht auf Sandbox. – Drj

0

Statuscode 400 bedeutet, dass Sie eine ungültige Anforderung senden. Etwas muss fehlen oder in einem falschen Format sein. Dies könnte eine fehlende User Agent-Zeichenfolge sein.

Für jede Fehlerantwort erhalten Sie eine Nachricht mit einer genauen Beschreibung, warum Ihre Anfrage abgelehnt wurde. Lesen Sie den Inhalt Ihrer Antwort.