在J

时间:2017-08-18 05:28:24

标签: json r openssl httr jsonlite

我正在尝试使用R将加密的请求发布到API

特别是 / v3 / orders / 请求。

它需要使用API​​ keysecret,以及增加nonce

使用openssljsonlitehttr库:

正文必须是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))

它还需要使用 sha256 加密signature构建的授权标头。

N<-NONCE() # "1503033312"

method<-"POST"

Path<-"/v3/orders/"

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

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

最后请求应如下所示:

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

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

之前我已经能够将具有空负载的请求发布到此API,但此调用会发送不受支持的媒体类型错误,这与我对Paylod编码JSON的方式有关。

有关如何发出此请求的Ruby和PHP示例here

2 个答案:

答案 0 :(得分:1)

由于我还没有尝试过的密钥,这是我曾经面对的一个案例的答案 - 你可能想要改变一下JSON调用。 # 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"} 会在您通话的每一侧放置一个括号。所以你需要删除它们:

class medicineList : NSObject
{

    var objectId : String?
    var name : String?

    var desc : String?
    var created : NSDate?
    var updated : NSDate?

}


func retrieveBlurbs()
{
    var backendless = Backendless.sharedInstance()
    let query = BackendlessDataQuery()
    // Use backendless.persistenceService to obtain a ref to a data store for the class
    backendless.persistenceService.ofTable(medicineList.ofClass()).find(query, response: { ( medicineList : BackendlessCollection!) -> () in
        let currentPage = medicineList.getCurrentPage()
        print("Loaded \(currentPage.count) medicineList objects")
        print("Total restaurants in the Backendless starage - \(medicineList.totalObjects)")

        for medicineList in currentPage as! [medicineList]
        {
            print("Medicine name = \(medicineList.name)")
        }




    } , error: { ( fault : Fault!) -> () in
            print("Server reported an error: \(fault)")
        })
}

让我知道它是否有效,

最好,

科林

答案 1 :(得分:0)

所以,我终于能够发送请求了。

我要感谢Colin Fay关于如何消除括号的回应。

问题是,标题必须使用未加括号的JSON主体构建,但主体必须作为具有自动JSON编码的列表发送,如下所示:

sm