Java – bitstamp {“error”: “API key not found”} code response: 200
•
Java
I tried to send a balance request to bitstamp in Java. I wrote the following code, but I received this error:
{"error": "API key not found"} code response: 200
Does anyone have an idea?
The key and secret were provided correctly by the exchange, so now I want to know if I made any mistakes in the whole process
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¶m2=b¶m3=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; }
}
Solution
Do you remember clicking activate next to the key on the API page?
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码