我正在尝试使用R将加密的请求发布到API。
特别是 / v3 / orders / 请求。
它需要使用API key
和secret
,以及增加nonce
。
使用openssl
,jsonlite
和httr
库:
正文必须是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。
答案 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