· 7 years ago · Feb 07, 2018, 03:46 PM
1import JSON.JsonObject;
2import java.io.BufferedReader;
3import java.io.DataOutputStream;
4import java.io.InputStreamReader;
5import java.net.URL;
6import java.net.URLConnection;
7import java.net.URLEncoder;
8import java.nio.charset.StandardCharsets;
9import java.security.MessageDigest;
10import java.util.Base64;
11import javax.crypto.Mac;
12import javax.crypto.spec.SecretKeySpec;
13import javax.net.ssl.HttpsURLConnection;
14
15/**
16 *
17 * @author Sampey
18 */
19
20public class HttpCryptopia {
21
22 public String privateUrl = "https://www.cryptopia.co.nz/Api/";
23 public String publicKey = "YOUR_PUBLIC_KEY";
24 public String privateKey = "YOUR_PRIVATE_KEY";
25
26 public HttpCryptopia(String method,String jSonPostParam) throws Exception {
27 String urlMethod = privateUrl + method;
28 String nonce = String.valueOf(System.currentTimeMillis());
29
30 String reqSignature =
31 publicKey
32 + "POST"
33 + URLEncoder.encode(urlMethod,StandardCharsets.UTF_8.toString()).toLowerCase()
34 + nonce
35 + getMD5_B64(jSonPostParam);
36
37 String AUTH = "amx "
38 + publicKey
39 +":"
40 + this.sha256_B64(reqSignature)
41 +":"
42 + nonce;
43
44 String response = this.continueForHttp(urlMethod, jSonPostParam,AUTH);
45
46 System.out.println("API RESPONSE : " + response);
47 }
48
49 private String continueForHttp(String urlMethod, String postParam,String AUTH) throws Exception {
50 URLConnection con = new URL(urlMethod).openConnection(); // CREATE POST CONNECTION
51 con.setDoOutput(true);
52
53 HttpsURLConnection httpsConn = (HttpsURLConnection) con;
54 httpsConn.setRequestMethod("POST");
55 httpsConn.setInstanceFollowRedirects(true);
56
57 con.setRequestProperty("Authorization", AUTH);
58 con.setRequestProperty("Content-Type", "application/json");
59
60 // WRITE POST PARAMS
61 DataOutputStream wr = new DataOutputStream(con.getOutputStream());
62 wr.writeBytes(postParam);
63 wr.flush();
64 wr.close();
65
66 // READ THE RESPONSE
67 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
68 String inputLine;
69 StringBuilder response = new StringBuilder();
70 while ((inputLine = in.readLine()) != null) {
71 response.append(inputLine);
72 }
73 in.close();
74
75 return response.toString();
76 }
77
78 private String getMD5_B64(String postParameter) throws Exception {
79 return Base64.getEncoder().encodeToString(MessageDigest.getInstance("MD5").digest(postParameter.getBytes("UTF-8")));
80 }
81
82 private String sha256_B64(String msg) throws Exception {
83 Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
84 SecretKeySpec secret_key = new SecretKeySpec(Base64.getDecoder().decode(privateKey), "HmacSHA256");
85 sha256_HMAC.init(secret_key);
86 return Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(msg.getBytes("UTF-8")));
87 }
88
89/*-------------------- // MAIN IS TO AUTO-EXECUTE THIS CLASS -----------------------------------*/
90
91 public static void main(String[] args) {
92 try {
93 // YOU CAN FORMAT THE JSON STRING USING THE LIBRARY YOU PREFER (OR MANUALLY)
94 JsonObject jo = new JsonObject();
95 jo.add("Currency", "DOT"); // EXAMPLE {"Currency":"DOT"}
96
97 new HttpCryptopia("GetBalance", jo.toString());
98 } catch (Exception e) {
99 System.out.println(e.getMessage());
100 e.printStackTrace();
101 }
102 }
103}