如何正确发出POST请求

时间:2017-02-07 20:23:42

标签: r http

我试图向API发出第一个POST请求。出于某种原因,我总是得到状态403作为回报。我怀疑它的签名是错误生成的。 api-key和客户端ID肯定是正确的。

我的代码

nonce <-as.integer(Sys.time())

post_message <- paste0(nonce, data_client.id, data_key) # data_client.id = client id # data_key = key

sha.message <- toupper(digest::hmac(data_secret, object = post_message, algo = 'sha256', serialize = TRUE))

url <- 'https://www.bitstamp.net/api/v2/balance/'


body = list('API-KEY' = data_key, 'nonce' = nonce, 'signature' = sha.message)

httr::POST(url, body = body, verbose())

输出

<- HTTP/1.1 403 Authentication Failed

我尝试访问Bitstamp API:https://www.bitstamp.net/api/?package=Rbitcoin&version=0.9.2

  

所有私有API调用都需要身份验证。为了成功   验证您需要提供您的API密钥,签名和   nonce参数。

     

API KEY

     

要获取API密钥,请转到&#34;帐户&#34;,&#34;安全&#34;然后&#34; API访问&#34;。   设置权限并单击&#34;生成密钥&#34;。

     

NONCEN

     

一次是常规整数。它必须随着每一个增加   请求你。在这里阅读更多相关信息。示例:如果设置nonce   在第一次请求中,您必须将其设置为至少2   第二个请求。你不需要从1.开始   练习是对该参数使用unix时间。

     

SIGNATURE

     

Signature是包含nonce,customer的HMAC-SHA256编码消息   ID(可在此处找到)和API密钥。 HMAC-SHA256代码必须是   使用您的API密钥生成的密钥生成。   此代码必须转换为它的十六进制表示(64   大写字符)。

1 个答案:

答案 0 :(得分:1)

我不确定您的问题是否仍然存在,但根据您的代码,我设法让它正常运行。事实上,主要的问题是在正文中,API文档显示它期望&#39;关键&#39;而不是API-KEY&#39;。 此外,序列化应为FALSE而不是TRUE。

目前这有效(但API可能会改变):

nonce <-as.integer(Sys.time())

post_message <- paste0(nonce, data_client.id, data_key) # data_client.id = client id # data_key = key

sha.message <- toupper(digest::hmac(data_secret, object = post_message, algo = 'sha256', serialize = FALSE))

url <- 'https://www.bitstamp.net/api/v2/balance/'

body = list('key' = data_key, 'nonce' = nonce, 'signature' = sha.message)

httr::POST(url, body = body, verbose())