- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我花了很多时间试图找出解决这个问题的方法,但没有成功。我相信这将是这个社区的糖果。问题:我正在尝试调用 poloniex.com 私有(private) API 函数。我设法在 JAVA Net beans 中做到这一点。这是一段代码:
JAVA:
String queryArgs = "command=returnBalances&nonce=" + nonce;
System.out.println("queryArgs: " + queryArgs);
Mac shaMac = Mac.getInstance("HmacSHA512");
System.out.println("shaMac: " + shaMac);
SecretKeySpec keySpec = new SecretKeySpec(secret.getBytes(), "HmacSHA512");
shaMac.init(keySpec);
final byte[] macData = shaMac.doFinal(queryArgs.getBytes());
System.out.println("macData: " + macData);
String sign = Hex.encodeHexString(macData);
System.out.println("sign: " + sign);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
post.addHeader("Key", key);
post.addHeader("Sign", sign);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("command", "returnBalances"));
//params.add(new BasicNameValuePair("command", "returnTicker"));
params.add(new BasicNameValuePair("nonce", nonce));
post.setEntity(new UrlEncodedFormEntity(params));
System.out.println("post: " + post.toString());
System.out.println("params: " + params);
CloseableHttpResponse response = httpClient.execute(post);
HttpEntity responseEntity = response.getEntity();
System.out.println(response.getStatusLine());
System.out.println(EntityUtils.toString(responseEntity));
但在谷歌脚本中我总是收到错误响应:“无效命令”我认为这是由于 POST 格式错误造成的。非工作代码在这里:
google script:
function returnBalances() {
var nonce = generateNonce().toString();
var queryArgs = "command=returnBalances&nonce=" + nonce;
var sign = signKey(queryArgs, api_secret);
Logger.log("final api_key:" + api_key);
Logger.log("final sign:" + sign);
var headers = {
"Key" : api_key,
"Sign" : sign,
};
var options = {
"contentType" : "application/json",
"method" : "POST",
"headers" : headers,
{"command": "returnBalances",
nonce": 20000},
};
Logger.log("headers"+JSON.stringify(headers));
Logger.log("options"+JSON.stringify(options));
var result = JSON.parse(UrlFetchApp.fetch(trading_url, options).getContentText());
Logger.log(result);
Logger.log(options);
}
如果有任何帮助,我将非常高兴。我相信这一定很简单,但我就是想不出来。非常感谢
最佳答案
给你。私有(private)和公共(public)通话的绝佳示例。
鸣谢:https://pastebin.com/TXB7Ed7W
// This is to use Google spreadsheet and Google Script with the Poloniex API both using public calls (GET) than private calls (POST) --> BTC donation: 122gvDXaLNLHyaYuMk9jh7fHXcRAffM6D5 ETH donation: 0x92e4A8627455c4069d6A963B793CE64013772Fb6
function updatePoloniex()
{
// TODO: This function is using the GET method and it's for the public api so you won't need login.
// Choose the command you want from https://poloniex.com/support/api/, in my case is returnTicker
var response = UrlFetchApp.fetch("https://poloniex.com/public?command=returnTicker");
// TODO: set your sheet name here
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DATA");
// The following line will parse in the object 'json' the result of 'returnTicker' which has previously been put into the variable 'response'
var json = JSON.parse(response.getContentText());
// next, we ask to create a variable for each of the ticker we want to look for
var rate = json.BTC_MAID.last;
var rate2 = json.BTC_DAO.last;
var rate3 = json.BTC_LSK.last;
var rate4 = json.BTC_ETH.last;
var rate5 = json.ETH_DAO.last;
var rate6 = json.ETH_LSK.last;
var rate7 = json.USDT_ETH.last;
// then we put the result of the parsing into the coordinates we desire on the sheet
// TODO: set column coordinates here in format (column, row); this is now set to A1
sheet.getRange(1, 1).setValue(rate);
sheet.getRange(2, 1).setValue(rate2);
sheet.getRange(3, 1).setValue(rate3);
sheet.getRange(4, 1).setValue(rate4);
sheet.getRange(5, 1).setValue(rate5);
sheet.getRange(6, 1).setValue(rate6);
sheet.getRange(7, 1).setValue(rate7);
};
// THIS IS THE PART THAT SHOWS YOU HOW TO DO PRIVATE CALLS with the POST METHOD and your Poloniex secret key
function sendHttpPost() {
// First you create a nonce, which is an incremental random number, to do so, we can use the current date time summed with a number
var nonce = 1465426902234426 + new Date().getTime();
// First choose a command from here https://poloniex.com/support/api/ seeing if it require specific options
// Then, we set the variable 'p' as a string which combine the command & any related parameter (if any) & the nonce.
// in this case we specified the account=all parameter for the command=returnCompleteBalances as it gives us also loans and on orders balances
var p = "command=returnCompleteBalances&account=all&nonce="+nonce
// Then, we sign this variable 'p' with our secret key (taken from the API of Poloniex) to obtain a new string 'signature'
var signature = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512,
p,
"HERE YOU PUT YOUR SECRET KEY");
// Then, we convert the resulting string: from an array of byte (which is a standard output) to HEX
signature = signature.map(function(byte) {
return ('0' + (byte & 0xFF).toString(16)).slice(-2);
}).join('')
// Then we create the variable 'headers' and we specify in the object "Key" the API key associated with the secret key (always taken from the API of Poloniex), and we pass the 'signature' output string to the object "Sign"
var headers = {
"Key" : "HERE YOU PUT YOUR API KEY",
"Sign" : signature
};
// then we define 'options' as POST method, specifying the headers and the payload
var options = {
"method" : "POST",
"headers": headers,
"payload": p
};
// then we fetch the url passing the 'options' which make us call the command and sign it
var response2 = UrlFetchApp.fetch("https://poloniex.com/tradingApi", options);
// we decide in which sheet of the current Google spreadsheet doc we want to dump the results
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DATA");
// then we parse the fetched url in the var 'json2'
var json2 = JSON.parse(response2.getContentText());
// asking different values that we pass into specific variables
var btcbalance = json2.BTC;
var maidbalance = json2.MAID;
var daobalance = json2.DAO;
var lskbalance = json2.LSK;
var ethbalance = json2.ETH;
Logger.log(btcbalance);
// since each currency provide three balances onOrders, available, btcValue in a single string but we want them in single cell of the sheet we take them providing them a home :^)
sheet.getRange(1, 3).setValue(btcbalance.onOrders);
sheet.getRange(1, 4).setValue(btcbalance.available);
sheet.getRange(1, 5).setValue(btcbalance.btcValue);
sheet.getRange(2, 3).setValue(maidbalance.onOrders);
sheet.getRange(2, 4).setValue(maidbalance.available);
sheet.getRange(2, 5).setValue(maidbalance.btcValue);
sheet.getRange(3, 3).setValue(daobalance.onOrders);
sheet.getRange(3, 4).setValue(daobalance.available);
sheet.getRange(3, 5).setValue(daobalance.btcValue);
sheet.getRange(4, 3).setValue(lskbalance.onOrders);
sheet.getRange(4, 4).setValue(lskbalance.available);
sheet.getRange(4, 5).setValue(lskbalance.btcValue);
sheet.getRange(5, 3).setValue(ethbalance.onOrders);
sheet.getRange(5, 4).setValue(ethbalance.available);
sheet.getRange(5, 5).setValue(ethbalance.btcValue);
};
关于javascript - Google 脚本 POST 方法与 poloniex api 调用的 JAVA 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43705170/
我正在尝试连接到 Poloniex。要连接,我正在使用 WynthShop 和此代码: public class Program { public static void Main(strin
===简单且简短=== 这些天(2018 年 1 月)是否有人有通过 WAMP 与 Poloniex 对话的工作应用程序? ===更具体=== 我使用了多个信息源以使用组合使其工作:autobahn-
我正在尝试通过推送 API 从 Poloniex 获取 Python 2.7.13 中的实时数据。我阅读了很多帖子(包括 How to connect to poloniex.com websocke
我一直在用这个Java poloniex api几个月的项目,但我遇到了上个月的一些问题。我知道这与这个项目无关,而是与 Poloniex 有关。由于这个问题,我无法使用这个项目。 问题出在安全检查。
这是我使用最新预发布版 WampSharp 的非常简单的代码: var channelFactory = new DefaultWampChannelFactory();
我正在使用此处提供的 Poloniex C# API:Poloniex C# . 我已通过公钥/私钥组合连接到我的 Poloniex 帐户 private PoloniexClient client
尽管有很多关于 Poloniex/Python 交易 api 访问的帖子,但我仍然不知道如何在 Python 3.6 上实现此功能。在我看来,这里的一个版本应该说得很完美,但事实并非如此: req['
我想连接到 Push API of Poloniex .在他们的页面上,他们写了以下内容: In order to use the push API, connect to wss://api.pol
我正在使用 poloniex 提供的 python 包装器:wrapper 我现在尝试运行的方法是: def returnTradeHistory(self,currencyPair): re
我尝试使用 python 连接到 poloniex 中的 Push API,并按照此处的答案说明进行操作: How to connect to poloniex.com websocket api u
第一步- body Step2-应用 HMACSHA512 的先决条件脚本。 Step3 - POST 请求的 header 。 Step2 中的 hmacd 作为 header 应用于请求。 我正面
我正在使用此处提供的 Poloniex C# API:Poloniex C# . 我正在尝试像这样从我的账户中提取 ETH: private string ETHWithdrawalAddress;
我正在使用上述脚本中的 python 包装器 import urllib import urllib2 import json import time import hmac,hashlib def
我尝试连接到 poloniex.com API https://poloniex.com/support/api/其中说: (All calls to the trading API are sent
我正在尝试连接到 wss://api.poloniex.com 并订阅股票代码。我在 python 中找不到任何工作示例。我尝试过使用 autobahn/twisted 和 websocket-cli
我正在尝试使用 Starscream (这很棒)连接到 Poloniex (加密货币交易所)API,用于通过套接字连接检索实时报价。 我已成功使用 Autobahn , 在 Python 中连接和订阅
Poloniex 不会将每条消息返回到我的套接字。我使用以下代码阅读消息,有时我会收到连续的消息编号,但有时会丢失 10 条消息: from autobahn.asyncio.wamp import
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在尝试编写一个简单的脚本来验证我是否正确地进行了 API 调用,然后我计划从那里构建一个更复杂的程序。我收到的错误响应是: {"error":"Invalid API key\/secret pa
这是我在 Stack 上的第一个问题,所以也许我会错过一些东西,因为我不习惯问这类问题。 我正在尝试将 poloniex-api-node 实现到 Node-Red 中。然而,每次运行代码时,我都会收
我是一名优秀的程序员,十分优秀!