2017-08-18 2 views
0

Ich versuche, R zu verwenden, um eine verschlüsselte Anfrage an eine API zu senden.POST-Anfrage mit JSON-Textkörper auf R

Speziell die /v3/orders/ Anfrage.

Es erfordert die Verwendung einer API key und secret, sowie eine zunehmende nonce.

Mit openssl, jsonlite und httr Bibliotheken:

Der Körper hat JSON codiert werden:

book<-"btc_eth" 
side<-"sell" 
major<-"0.1" 
price<-"100" 
type<-"limit" 

Payload<-toJSON(data.frame(book=book,side=side,major=major,price=price,type=type)) 

Es erfordert auch eine Berechtigungs Titel mit einem konstruiert sha256 verschlüsselt signature.

N<-NONCE() # "1503033312" 

method<-"POST" 

Path<-"/v3/orders/" 

Signature<-sha256(paste0(N,method,Path,Payload),secret) 

header<-paste0("Bitso ",key,":",N,":",Signature) 

Schließlich sollte die Anfrage wie folgt aussehen:

url<-"https://api.bitso.com/v3/orders/" 

r<-POST(url, body = Payload, add_headers(Authorization=header)) 

konnte ich Anfragen mit einer leeren Nutzlast auf diese API vor schreiben, aber dieser Ruf sendet nicht unterstützten Medientyp Fehler, etwas über die Ich bin JSON Codierung der Paylod verursacht dies.

Es gibt Ruby- und PHP-Beispiele für die Platzierung dieser Anfrage here.

Antwort

0

Also, ich schließlich in der Lage war die Anfrage zu senden.

Ich muss Colin Fay für seine Antwort zur Beseitigung der Klammern danken.

Das Ding war, hatte der Header mit dem ohne Klammern JSON Körper konstruiert werden, aber der Körper, wie folgend als eine Liste mit automatischer JSON-Codierung hatte gesendet werden:

NC<-NONCE() 

mthd<-"POST" 

Pyld<- toJSON(data.frame(book=book,side=side,major=major,price=price,type=type)) 

Pyld <- gsub("\\[|\\]", "", Pyld) 

body<-list(book=book,side=side,major=major,price=price,type=type) 

url<-"https://api.bitso.com/v3/orders/" 

Pth<-"/v3/orders/" 

hdr<-paste0("Bitso ",ky,":",NC,":",sha256(paste0(NC,mthd,Pth,Pyld),scrt)) 

r<-POST(url, body = body, add_headers(Authorization=hdr),encode="json",verbose()) 
0

Da ich keinen Schlüssel zu versuchen habe, ist dies eine Antwort aus einem Fall, in dem ich einmal zu Gesicht war - vielleicht möchten Sie ein bisschen Ihren JSON-Anruf ändern. toJSON legt eine Klammer an jeder Seite von dir an. So müssen Sie sie entfernen:

# Go from 
Payload<- jsonlite::toJSON(data.frame(book=book,side=side,major=major,price=price,type=type)) 
Payload 
[{"book":"btc_eth","side":"sell","major":"0.1","price":"100","type":"limit"}] 

# To 
Payload <- gsub("\\[|\\]", "", Payload) 
Payload 
{"book":"btc_eth","side":"sell","major":"0.1","price":"100","type":"limit"} 

Lassen Sie mich wissen, ob es funktioniert,

Best,

Colin

+0

ich war in der Lage zu schreiben meine Anfrage Das Entfernen von Klammern war entscheidend. Vielen Dank für Ihre Hilfe. Ich habe meine eigene Frage beantwortet. –