加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Bitstamp {“error”:“未找到API密钥”}代码响应:200

发布时间:2020-12-15 05:11:27 所属栏目:Java 来源:网络整理
导读:我试图在 java中向Bitstamp发出一个平衡请求,我写了下面的代码,但是我收到了这个错误: {“error”:“未找到API密钥”} 代码响应:200 有人有想法吗? 关键和秘密是交易所正确提供的,所以现在我想知道我是否在整个过程中犯了任何错误. import java.io.Buffe
我试图在 java中向Bitstamp发出一个平衡请求,我写了下面的代码,但是我收到了这个错误:

{“error”:“未找到API密钥”}
代码响应:200

有人有想法吗?

关键和秘密是交易所正确提供的,所以现在我想知道我是否在整个过程中犯了任何错误.

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.net.ssl.HttpsURLConnection;
import javax.xml.bind.DatatypeConverter;

public class Main {

public static void main(String[] args) {
    String key    = "apiKeyDEMO";
    String secret = "apiSecretDEMO";
    Integer nonce  = 100;
    String ID = "123456";

    String message = nonce.toString() + ID + key;

    String signature = "";
    try {
        signature = encode(secret,message);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    Map<String,String> map = new LinkedHashMap<String,String>();

    map.put("key",key);
    map.put("signature",signature);
    map.put("nonce",nonce.toString());

      StringBuilder urlParameters = new StringBuilder();

      for (String k : map.keySet()) {
          if(urlParameters.length() > 0) {
              urlParameters.append("&");
          }
          urlParameters.append(k).append("=").append(URLEncoder.encode(map.get(k)));
      }

      //System.out.println(urlParameters);


    try {
        doPost(map);
    } catch (KeyManagementException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }



}

public static String encode(String secret,String message) throws Exception {

    Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
    SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(),"HmacSHA256");
    sha256_HMAC.init(secret_key);
    byte[] hash = sha256_HMAC.doFinal(message.getBytes());
    String signature = DatatypeConverter.printHexBinary(hash).toUpperCase();

    //System.out.println(signature);

    return signature;

}


private static String doPost( Map<String,String> params) throws IOException,NoSuchAlgorithmException,KeyManagementException {

    //"param1=a&param2=b&param3=c"
      StringBuilder urlParameters = new StringBuilder();

      for (String key : params.keySet()) {
         if(urlParameters.length() > 0) {
            urlParameters.append("&");
         }
         //urlParameters.append(key).append("=").append(URLEncoder.encode(params.get(key)));
         urlParameters.append(key).append("=").append(params.get(key));
      }


      String query = urlParameters.toString();

      System.out.println(query);


      URL url = new URL("https://www.bitstamp.net/api/balance/");

      HttpsURLConnection con = (HttpsURLConnection) url.openConnection();

      //add reuqest header
      con.setRequestMethod("POST");

      // Send post request
      con.setDoOutput(true);
      DataOutputStream wr = new DataOutputStream(con.getOutputStream());
      wr.writeBytes(query);
      wr.flush();
      wr.close();


      String json = "";
      if (con.getResponseCode() == HttpsURLConnection.HTTP_OK) {
         BufferedReader br = new BufferedReader(new
         InputStreamReader(con.getInputStream()));
         String text;
         while((text = br.readLine()) != null) {
            json += text;
         }
         br.close();
      }else{
         ;
      }
      con.disconnect();
      System.out.println("Code Response: " + con.getResponseCode());
      return json;


   }

}

解决方法

你还记得点击API页面上的密钥旁边的激活吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读