/ / POST encripted žiadosť s JSON body na R - json, r, openssl, httr, jsonlite

Požiadaná požiadavka POST s telom JSON na R - json, r, openssl, httr, jsonlite

Snažím sa použiť R na odoslanie šifrovanej žiadosti na adresu API.

Konkrétne / V3 / objednávky / Požiadavka.

Vyžaduje použitie rozhrania API key a secret, ako aj rastúce nonce.

Použitím openssl, jsonlite a httr knižnice:

Telo musí byť zakódované JSON:

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))

Vyžaduje tiež autorizačnú hlavičku s koncovkou sha256 šifrované signature.

N<-NONCE() # "1503033312"

method<-"POST"

Path<-"/v3/orders/"

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

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

Nakoniec by žiadosť mala vyzerať takto:

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

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

Dokázal (-a) odoslať žiadosti s prázdnym užitočným nákladom do tohto rozhrania API, ale toto volanie posiela nepodporovanú chybu typu média, niečo o spôsobe, akým som to spôsobil JSON kódovanie platidla.

Tam je Ruby a PHP príklady, ako umiestniť túto požiadavku tu.

odpovede:

1 pre odpoveď č. 1

Keďže som nemal kľúče na vyskúšanie, je to odpoveď z prípadu, s kým som kedysi čelil - možno budete chcieť trochu zmeniť tvoj telefón JSON. toJSON umiestni držiak na každú stranu, na ktorú zavoláte. Musíte ich odstrániť:

# 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"}

Dajte mi vedieť, či to funguje,

best,

colin


0 pre odpoveď č. 2

Takže som konečne mohol poslať žiadosť.

Musím poďakovať Colinovi Fayovi za jeho odpoveď na to, ako odstrániť zátvorky.

Ide o to, že záhlavie muselo byť skonštruované s neodvráteným telom JSON, ale telo muselo byť odoslané ako zoznam s automatickým kódovaním JSON nasledovne:

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())