HttpGet запрос на ошибку обмена Binance с Java - PullRequest
0 голосов
/ 26 декабря 2018

У меня проблема с отправкой HTTP Get request через Binance exchange.(Мне нужно вернуть статус моего кошелька)

в руководстве GitHub сказано, что (https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md)


Информация об учетной записи (USER_DATA)

GET / api / v3 / account (HMAC SHA256)

Получить информацию о текущем счете.

Вес: 5

Параметры:

Имя ТипОбязательное описание

recvWindow LONG NO

timestamp LONG YES


мои коды такие, как показано ниже

    public static String timestamp = String.valueOf(System.currentTimeMillis());

    public static void wallet_status () throws NoSuchAlgorithmException, InvalidKeyException {
    String url = "https://api.binance.com/api/v3/account&timestamp=" + timestamp;

    //sign url
    Mac shaMac = Mac.getInstance("HmacSHA256");
    SecretKeySpec keySpec = new SecretKeySpec(BINANCE_SECRET_KEY.getBytes(), "HmacSHA256");
    shaMac.init(keySpec);       
    final byte[] macData = shaMac.doFinal(url.getBytes());
    String sign = Hex.encodeHexString(macData);

    HttpClient client = HttpClientBuilder.create().build();
    HttpGet request = new HttpGet("https://api.binance.com/api/v3/account"+"?timestamp="+timestamp+"?signature="+sign);
    request.addHeader("X-MBX-APIKEY", BINANCE_API_KEY);

    try {
        HttpResponse response = client.execute(request);
        HttpEntity entity = response.getEntity();

        if (entity != null) {
            try (InputStream stream = entity.getContent()) {
                BufferedReader reader =
                        new BufferedReader(new InputStreamReader(stream));
                String line;
                while ((line = reader.readLine()) != null) {
                      System.out.println(line);
                }
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
} //end

ответ серверакак показано ниже

{"code": - 1100, "msg": "В параметре 'timestamp' обнаружены недопустимые символы; допустимый диапазон: '^ [0-9] {1,20} $'. "}

но моя временная метка String представляет собой 13-значную цифровую строку, которая не должна быть проблемой. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Разделитель строки запроса: &, а не ?

Использование: "https://api.binance.com/api/v3/account"+"?timestamp="+timestamp+"&signature="+sign

0 голосов
/ 26 декабря 2018

Ваш URL неверен.Измените ?signature= на &signature=.

. Вы должны использовать & в качестве разделителя для последующих переменных в URL.В настоящее время ?signature... рассматривается как значение переменной timestamp, вызывая это сообщение об ошибке.

...