Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 位戳{“错误”:“未找到API密钥”}代码响应:200_Java_Web Services_Base64 - Fatal编程技术网

Java 位戳{“错误”:“未找到API密钥”}代码响应:200

Java 位戳{“错误”:“未找到API密钥”}代码响应:200,java,web-services,base64,Java,Web Services,Base64,我试图在java中向Bitstamp发出一个平衡请求,我编写了以下代码,但出现了以下错误: {“错误”:“未找到API密钥”} 代码回复:200 有人有主意吗 钥匙和秘密是交易所正确提供的,所以现在我想知道我是否在这一过程中犯了任何错误 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; impor

我试图在java中向Bitstamp发出一个平衡请求,我编写了以下代码,但出现了以下错误:

{“错误”:“未找到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;


   }
导入java.io.BufferedReader;
导入java.io.DataOutputStream;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.net.URL;
导入java.net.urlcoder;
导入java.security.KeyManagementException;
导入java.security.NoSuchAlgorithmException;
导入java.util.LinkedHashMap;
导入java.util.Map;
导入javax.crypto.Mac;
导入javax.crypto.spec.SecretKeySpec;
导入javax.net.ssl.HttpsURLConnection;
导入javax.xml.bind.DatatypeConverter;
公共班机{
公共静态void main(字符串[]args){
String key=“apiKeyDEMO”;
String secret=“apiSecretDEMO”;
整数nonce=100;
字符串ID=“123456”;
字符串消息=nonce.toString()+ID+key;
字符串签名=”;
试一试{
签名=编码(秘密、消息);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Map Map=newlinkedhashmap();
地图。放置(“键”,键);
地图。放置(“签名”,签名);
map.put(“nonce”,nonce.toString());
StringBuilder urlParameters=新的StringBuilder();
for(字符串k:map.keySet()){
if(urlParameters.length()>0){
urlParameters.append(“&”);
}
urlParameters.append(k.append(“=”).append(urlcoder.encode(map.get(k));
}
//System.out.println(URL参数);
试一试{
doPost(map);
}捕获(密钥管理异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(无算法异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
公共静态字符串编码(字符串机密、字符串消息)引发异常{
Mac-sha256_-HMAC=Mac.getInstance(“HmacSHA256”);
SecretKeySpec secret_key=新的SecretKeySpec(secret.getBytes(),“HmacSHA256”);
sha256_HMAC.init(密钥);
byte[]hash=sha256hmac.doFinal(message.getBytes());
字符串签名=DatatypeConverter.printHexBinary(哈希).toUpperCase();
//系统输出打印号(签名);
返回签名;
}
私有静态字符串doPost(映射参数)引发IOException、NoSuchAlgorithmException、KeyManagementException{
//“参数1=a&参数2=b&参数3=c”
StringBuilder urlParameters=新的StringBuilder();
for(字符串键:params.keySet()){
if(urlParameters.length()>0){
urlParameters.append(“&”);
}
//urlParameters.append(key.append(“=”).append(urlcoder.encode(params.get(key));
urlParameters.append(key.append(“=”).append(params.get(key));
}
字符串查询=urlParameters.toString();
System.out.println(查询);
URL=新URL(“https://www.bitstamp.net/api/balance/");
HttpsURLConnection con=(HttpsURLConnection)url.openConnection();
//添加reuqest标题
con.setRequestMethod(“POST”);
//发送邮寄请求
con.设置输出(真);
DataOutputStream wr=新的DataOutputStream(con.getOutputStream());
writeBytes(查询);
wr.flush();
wr.close();
字符串json=“”;
if(con.getResponseCode()==HttpsURLConnection.HTTP\u确定){
BufferedReader br=新的BufferedReader(新的
InputStreamReader(con.getInputStream());
字符串文本;
而((text=br.readLine())!=null){
json+=文本;
}
br.close();
}否则{
;
}
con.disconnect();
System.out.println(“代码响应:+con.getResponseCode());
返回json;
}

}

您是否记得在API页面上单击键旁边的激活?

您是否找到过此项?我在使用XChange库时也遇到了同样的问题,这个库曾经工作过(在bitstamp上出现新的API外观之前,可能是相关的),当然我做到了!我找到了解决办法,但我重写了整件事。