| | |
| | | package com.qcloud.cmq; |
| | | |
| | | import java.util.TreeMap; |
| | | import java.util.Random; |
| | | import java.net.URLEncoder; |
| | | |
| | | public class CMQClient { |
| | | protected String CURRENT_VERSION = "SDK_JAVA_1.3"; |
| | | |
| | | protected String endpoint; |
| | | protected String path; |
| | | protected String secretId; |
| | | protected String secretKey; |
| | | protected String method; |
| | | protected String signMethod; |
| | | protected CMQHttp cmqHttp; |
| | | |
| | | public CMQClient(String endpoint, String path, String secretId, String secretKey, String method){ |
| | | this.endpoint = endpoint; |
| | | this.path = path; |
| | | this.secretId = secretId; |
| | | this.secretKey = secretKey; |
| | | this.method = method; |
| | | this.signMethod="sha1"; |
| | | this.cmqHttp = new CMQHttp(); |
| | | } |
| | | |
| | | public void setSignMethod(String signMethod) |
| | | { |
| | | if(signMethod == "sha1" || signMethod == "sha256") |
| | | this.signMethod = signMethod; |
| | | else |
| | | throw new CMQClientException("Only support sha256 or sha1"); |
| | | } |
| | | public String call(String action, TreeMap<String,String> param) throws Exception{ |
| | | String rsp = ""; |
| | | try{ |
| | | param.put("Action", action); |
| | | param.put("Nonce", Integer.toString(new Random().nextInt(java.lang.Integer.MAX_VALUE))); |
| | | param.put("SecretId", this.secretId); |
| | | param.put("Timestamp", Long.toString(System.currentTimeMillis() / 1000)); |
| | | param.put("RequestClient", this.CURRENT_VERSION); |
| | | if (this.signMethod =="sha256") |
| | | param.put("SignatureMethod","HmacSHA256"); |
| | | else |
| | | param.put("SignatureMethod","HmacSHA1"); |
| | | |
| | | String host=""; |
| | | if(this.endpoint.startsWith("https")) |
| | | host = this.endpoint.substring(8); |
| | | else |
| | | host = this.endpoint.substring(7); |
| | | String src = ""; |
| | | src += this.method + host + this.path + "?"; |
| | | |
| | | boolean flag = false; |
| | | for(String key: param.keySet()){ |
| | | if(flag) |
| | | src += "&"; |
| | | //src += key + "=" + param.get(key); |
| | | src += key.replace("_", ".") + "=" + param.get(key); |
| | | flag = true; |
| | | } |
| | | param.put("Signature",CMQTool.sign(src, this.secretKey,this.signMethod)); |
| | | String url = ""; |
| | | String req = ""; |
| | | if(this.method.equals("GET")){ |
| | | url = this.endpoint + this.path + "?"; |
| | | flag = false; |
| | | for(String key: param.keySet()){ |
| | | if(flag) |
| | | url += "&"; |
| | | url += key + "=" + URLEncoder.encode(param.get(key),"utf-8"); |
| | | flag = true; |
| | | } |
| | | if(url.length() > 2048) |
| | | throw new CMQClientException("URL length is larger than 2K when use GET method"); |
| | | } |
| | | else{ |
| | | url = this.endpoint + this.path; |
| | | flag = false; |
| | | for(String key: param.keySet()){ |
| | | if(flag) |
| | | req += "&"; |
| | | req += key + "=" + URLEncoder.encode(param.get(key),"utf-8"); |
| | | flag = true; |
| | | } |
| | | } |
| | | |
| | | //System.out.println("url:"+url); |
| | | int userTimeout=0; |
| | | if(param.containsKey("UserpollingWaitSeconds")) |
| | | { |
| | | userTimeout=Integer.parseInt(param.get("UserpollingWaitSeconds")); |
| | | } |
| | | rsp = this.cmqHttp.request(this.method,url,req,userTimeout); |
| | | //System.out.println("rsp:"+rsp); |
| | | |
| | | }catch(Exception e){ |
| | | throw e; |
| | | } |
| | | return rsp; |
| | | } |
| | | } |
| | | package com.qcloud.cmq;
|
| | |
|
| | | import java.util.TreeMap;
|
| | | import java.util.Random;
|
| | | import java.net.URLEncoder;
|
| | |
|
| | | public class CMQClient {
|
| | | protected String CURRENT_VERSION = "SDK_JAVA_1.3";
|
| | | |
| | | protected String endpoint;
|
| | | protected String path;
|
| | | protected String secretId;
|
| | | protected String secretKey;
|
| | | protected String method;
|
| | | protected String signMethod;
|
| | | protected CMQHttp cmqHttp;
|
| | | |
| | | public CMQClient(String endpoint, String path, String secretId, String secretKey, String method){
|
| | | this.endpoint = endpoint;
|
| | | this.path = path;
|
| | | this.secretId = secretId;
|
| | | this.secretKey = secretKey;
|
| | | this.method = method;
|
| | | this.signMethod="sha1";
|
| | | this.cmqHttp = new CMQHttp();
|
| | | }
|
| | | |
| | | public void setSignMethod(String signMethod)
|
| | | {
|
| | | if(signMethod == "sha1" || signMethod == "sha256")
|
| | | this.signMethod = signMethod;
|
| | | else
|
| | | throw new CMQClientException("Only support sha256 or sha1");
|
| | | }
|
| | | public String call(String action, TreeMap<String,String> param) throws Exception{
|
| | | String rsp = "";
|
| | | try{
|
| | | param.put("Action", action);
|
| | | param.put("Nonce", Integer.toString(new Random().nextInt(java.lang.Integer.MAX_VALUE)));
|
| | | param.put("SecretId", this.secretId);
|
| | | param.put("Timestamp", Long.toString(System.currentTimeMillis() / 1000));
|
| | | param.put("RequestClient", this.CURRENT_VERSION);
|
| | | if (this.signMethod =="sha256")
|
| | | param.put("SignatureMethod","HmacSHA256");
|
| | | else
|
| | | param.put("SignatureMethod","HmacSHA1");
|
| | | |
| | | String host="";
|
| | | if(this.endpoint.startsWith("https"))
|
| | | host = this.endpoint.substring(8);
|
| | | else
|
| | | host = this.endpoint.substring(7);
|
| | | String src = "";
|
| | | src += this.method + host + this.path + "?";
|
| | | |
| | | boolean flag = false;
|
| | | for(String key: param.keySet()){
|
| | | if(flag)
|
| | | src += "&";
|
| | | //src += key + "=" + param.get(key);
|
| | | src += key.replace("_", ".") + "=" + param.get(key);
|
| | | flag = true;
|
| | | }
|
| | | param.put("Signature",CMQTool.sign(src, this.secretKey,this.signMethod));
|
| | | String url = "";
|
| | | String req = "";
|
| | | if(this.method.equals("GET")){
|
| | | url = this.endpoint + this.path + "?";
|
| | | flag = false;
|
| | | for(String key: param.keySet()){
|
| | | if(flag)
|
| | | url += "&";
|
| | | url += key + "=" + URLEncoder.encode(param.get(key),"utf-8");
|
| | | flag = true;
|
| | | }
|
| | | if(url.length() > 2048)
|
| | | throw new CMQClientException("URL length is larger than 2K when use GET method");
|
| | | }
|
| | | else{
|
| | | url = this.endpoint + this.path;
|
| | | flag = false;
|
| | | for(String key: param.keySet()){
|
| | | if(flag)
|
| | | req += "&";
|
| | | req += key + "=" + URLEncoder.encode(param.get(key),"utf-8");
|
| | | flag = true;
|
| | | }
|
| | | }
|
| | | |
| | | //System.out.println("url:"+url);
|
| | | int userTimeout=0;
|
| | | if(param.containsKey("UserpollingWaitSeconds"))
|
| | | {
|
| | | userTimeout=Integer.parseInt(param.get("UserpollingWaitSeconds"));
|
| | | }
|
| | | rsp = this.cmqHttp.request(this.method,url,req,userTimeout);
|
| | | //System.out.println("rsp:"+rsp);
|
| | | |
| | | }catch(Exception e){
|
| | | throw e;
|
| | | }
|
| | | return rsp;
|
| | | }
|
| | | }
|