海康sdk
package com.hikvision.artemis.sdk.util; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; public class SignUtil { public static String sign(String secret, String method, String path, Map<String, String> headers, Map<String, String> querys, Map<String, String> bodys, List<String> signHeaderPrefixList) { try { Mac hmacSha256 = Mac.getInstance("HmacSHA256"); byte[] keyBytes = secret.getBytes("UTF-8"); hmacSha256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, "HmacSHA256")); return new String(Base64.encodeBase64(hmacSha256 .doFinal(buildStringToSign(method, path, headers, querys, bodys, signHeaderPrefixList) .getBytes("UTF-8"))), "UTF-8"); } catch (Exception e) { throw new RuntimeException(e); } } private static String buildStringToSign(String method, String path, Map<String, String> headers, Map<String, String> querys, Map<String, String> bodys, List<String> signHeaderPrefixList) { StringBuilder sb = new StringBuilder(); sb.append(method.toUpperCase()).append("\n"); if (null != headers) { if (null != headers.get("Accept")) { sb.append((String)headers.get("Accept")); sb.append("\n"); } if (null != headers.get("Content-MD5")) { sb.append((String)headers.get("Content-MD5")); sb.append("\n"); } if (null != headers.get("Content-Type")) { sb.append((String)headers.get("Content-Type")); sb.append("\n"); } if (null != headers.get("Date")) { sb.append((String)headers.get("Date")); sb.append("\n"); } } sb.append(buildHeaders(headers, signHeaderPrefixList)); sb.append(buildResource(path, querys, bodys)); return sb.toString(); } private static String buildResource(String path, Map<String, String> querys, Map<String, String> bodys) { StringBuilder sb = new StringBuilder(); if (!StringUtils.isBlank(path)) { sb.append(path); } Map<String, String> sortMap = new TreeMap(); if (null != querys) { for (Map.Entry<String, String> query : querys.entrySet()) { if (!StringUtils.isBlank((CharSequence)query.getKey())) { sortMap.put(query.getKey(), query.getValue()); } } } if (null != bodys) { for (??? = bodys.entrySet().iterator(); ???.hasNext();) { body = (Map.Entry)???.next(); if (!StringUtils.isBlank((CharSequence)body.getKey())) { sortMap.put(body.getKey(), body.getValue()); } } } Map.Entry<String, String> body; StringBuilder sbParam = new StringBuilder(); for (Map.Entry<String, String> item : sortMap.entrySet()) { if (!StringUtils.isBlank((CharSequence)item.getKey())) { if (0 < sbParam.length()) { sbParam.append("&"); } sbParam.append((String)item.getKey()); if (!StringUtils.isBlank((CharSequence)item.getValue())) { sbParam.append("=").append((String)item.getValue()); } } } if (0 < sbParam.length()) { sb.append("?"); sb.append(sbParam); } return sb.toString(); } private static String buildHeaders(Map<String, String> headers, List<String> signHeaderPrefixList) { StringBuilder sb = new StringBuilder(); if (null != signHeaderPrefixList) { signHeaderPrefixList.remove("x-ca-signature"); signHeaderPrefixList.remove("Accept"); signHeaderPrefixList.remove("Content-MD5"); signHeaderPrefixList.remove("Content-Type"); signHeaderPrefixList.remove("Date"); Collections.sort(signHeaderPrefixList); } if (null != headers) { Map<String, String> sortMap = new TreeMap(); sortMap.putAll(headers); StringBuilder signHeadersStringBuilder = new StringBuilder(); for (Map.Entry<String, String> header : sortMap.entrySet()) { if (isHeaderToSign((String)header.getKey(), signHeaderPrefixList)) { sb.append((String)header.getKey()); sb.append(":"); if (!StringUtils.isBlank((CharSequence)header.getValue())) { sb.append((String)header.getValue()); } sb.append("\n"); if (0 < signHeadersStringBuilder.length()) { signHeadersStringBuilder.append(","); } signHeadersStringBuilder.append((String)header.getKey()); } } headers.put("x-ca-signature-headers", signHeadersStringBuilder.toString()); } return sb.toString(); } private static boolean isHeaderToSign(String headerName, List<String> signHeaderPrefixList) { if (StringUtils.isBlank(headerName)) { return false; } if (headerName.startsWith("x-ca-")) { return true; } if (null != signHeaderPrefixList) { for (String signHeaderPrefix : signHeaderPrefixList) { if (headerName.equalsIgnoreCase(signHeaderPrefix)) { return true; } } } return false; } }
package com.hikvision.artemis.sdk.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.entity.ByteArrayEntity; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; public class HttpUtils { public static HttpResponse doGet(String host, String path, String method, Map<String, String> headers, Map<String, String> querys) throws Exception { HttpClient httpClient = wrapClient(host); HttpGet request = new HttpGet(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader((String)e.getKey(), (String)e.getValue()); } return httpClient.execute(request); } public static HttpResponse doPost(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, Map<String, String> bodys) throws Exception { HttpClient httpClient = wrapClient(host); HttpPost request = new HttpPost(buildUrl(host, path, querys)); for (Iterator localIterator = headers.entrySet().iterator(); localIterator.hasNext();) { e = (Map.Entry)localIterator.next(); request.addHeader((String)e.getKey(), (String)e.getValue()); } Map.Entry<String, String> e; if (bodys != null) { Object nameValuePairList = new ArrayList(); for (String key : bodys.keySet()) { ((List)nameValuePairList).add(new BasicNameValuePair(key, (String)bodys.get(key))); } UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity((List)nameValuePairList, "utf-8"); formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); request.setEntity(formEntity); } return httpClient.execute(request); } public static HttpResponse doPost(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, String body) throws Exception { HttpClient httpClient = wrapClient(host); HttpPost request = new HttpPost(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader((String)e.getKey(), (String)e.getValue()); } if (StringUtils.isNotBlank(body)) { request.setEntity(new StringEntity(body, "utf-8")); } return httpClient.execute(request); } public static HttpResponse doPost(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, byte[] body) throws Exception { HttpClient httpClient = wrapClient(host); HttpPost request = new HttpPost(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader((String)e.getKey(), (String)e.getValue()); } if (body != null) { request.setEntity(new ByteArrayEntity(body)); } return httpClient.execute(request); } public static HttpResponse doPut(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, String body) throws Exception { HttpClient httpClient = wrapClient(host); HttpPut request = new HttpPut(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader((String)e.getKey(), (String)e.getValue()); } if (StringUtils.isNotBlank(body)) { request.setEntity(new StringEntity(body, "utf-8")); } return httpClient.execute(request); } public static HttpResponse doPut(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, byte[] body) throws Exception { HttpClient httpClient = wrapClient(host); HttpPut request = new HttpPut(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader((String)e.getKey(), (String)e.getValue()); } if (body != null) { request.setEntity(new ByteArrayEntity(body)); } return httpClient.execute(request); } public static HttpResponse doDelete(String host, String path, String method, Map<String, String> headers, Map<String, String> querys) throws Exception { HttpClient httpClient = wrapClient(host); HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader((String)e.getKey(), (String)e.getValue()); } return httpClient.execute(request); } private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException { StringBuilder sbUrl = new StringBuilder(); sbUrl.append(host); if (!StringUtils.isBlank(path)) { sbUrl.append(path); } if (null != querys) { StringBuilder sbQuery = new StringBuilder(); for (Map.Entry<String, String> query : querys.entrySet()) { if (0 < sbQuery.length()) { sbQuery.append("&"); } if ((StringUtils.isBlank((CharSequence)query.getKey())) && (!StringUtils.isBlank((CharSequence)query.getValue()))) { sbQuery.append((String)query.getValue()); } if (!StringUtils.isBlank((CharSequence)query.getKey())) { sbQuery.append((String)query.getKey()); if (!StringUtils.isBlank((CharSequence)query.getValue())) { sbQuery.append("="); sbQuery.append(URLEncoder.encode((String)query.getValue(), "utf-8")); } } } if (0 < sbQuery.length()) { sbUrl.append("?").append(sbQuery); } } return sbUrl.toString(); } private static HttpClient wrapClient(String host) { HttpClient httpClient = new DefaultHttpClient(); if (host.startsWith("https://")) { sslClient(httpClient); } return httpClient; } private static void sslClient(HttpClient httpClient) { try { SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] xcs, String str) {} public void checkServerTrusted(X509Certificate[] xcs, String str) {} }; ctx.init(null, new TrustManager[] { tm }, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx); ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = httpClient.getConnectionManager(); SchemeRegistry registry = ccm.getSchemeRegistry(); registry.register(new Scheme("https", 443, ssf)); } catch (KeyManagementException ex) { throw new RuntimeException(ex); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } } }
doget
package com.hikvision.artemis.sdk; import com.hikvision.artemis.sdk.config.ArtemisConfig; import com.hikvision.artemis.sdk.enums.Method; import com.hikvision.artemis.sdk.util.MessageDigestUtil; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ArtemisHttpUtil { private static final Logger logger = LoggerFactory.getLogger(ArtemisHttpUtil.class); private static final List<String> CUSTOM_HEADERS_TO_SIGN_PREFIX = new ArrayList(); private static final String SUCC_PRE = "2"; public static String doGetArtemis(Map<String, String> path, Map<String, String> querys, String accept, String contentType) { String httpSchema = (String)path.keySet().toArray()[0]; if ((httpSchema == null) || (StringUtils.isEmpty(httpSchema))) { throw new RuntimeException("http��https��������httpSchema: " + httpSchema); } String responseStr = null; try { Map<String, String> headers = new HashMap(); if (StringUtils.isNotBlank(accept)) { headers.put("Accept", accept); } else { headers.put("Accept", "*/*"); } if (StringUtils.isNotBlank(contentType)) { headers.put("Content-Type", contentType); } else { headers.put("Content-Type", "application/text;charset=UTF-8"); } CUSTOM_HEADERS_TO_SIGN_PREFIX.clear(); Request request = new Request(Method.GET, httpSchema + ArtemisConfig.host, (String)path.get(httpSchema), ArtemisConfig.appKey, ArtemisConfig.appSecret, 2000); request.setHeaders(headers); request.setSignHeaderPrefixList(CUSTOM_HEADERS_TO_SIGN_PREFIX); request.setQuerys(querys); Response response = Client.execute(request); responseStr = getResponseResult(response); } catch (Exception e) { logger.error("the Artemis GET Request is failed[doGetArtemis]", e); } return responseStr; } public static String doPostFormArtemis(Map<String, String> path, Map<String, String> paramMap, Map<String, String> querys, String accept, String contentType) { String httpSchema = (String)path.keySet().toArray()[0]; if ((httpSchema == null) || (StringUtils.isEmpty(httpSchema))) { throw new RuntimeException("http��https��������httpSchema: " + httpSchema); } String responseStr = null; try { Map<String, String> headers = new HashMap(); if (StringUtils.isNotBlank(accept)) { headers.put("Accept", accept); } else { headers.put("Accept", "*/*"); } if (StringUtils.isNotBlank(contentType)) { headers.put("Content-Type", contentType); } else { headers.put("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); } CUSTOM_HEADERS_TO_SIGN_PREFIX.clear(); Request request = new Request(Method.POST_FORM, httpSchema + ArtemisConfig.host, (String)path.get(httpSchema), ArtemisConfig.appKey, ArtemisConfig.appSecret, 2000); request.setHeaders(headers); request.setSignHeaderPrefixList(CUSTOM_HEADERS_TO_SIGN_PREFIX); request.setQuerys(querys); request.setBodys(paramMap); Response response = Client.execute(request); responseStr = getResponseResult(response); } catch (Exception e) { logger.error("the Artemis PostForm Request is failed[doPostFormArtemis]", e); } return responseStr; } public static String doPostStringArtemis(Map<String, String> path, String body, Map<String, String> querys, String accept, String contentType) { String httpSchema = (String)path.keySet().toArray()[0]; if ((httpSchema == null) || (StringUtils.isEmpty(httpSchema))) { throw new RuntimeException("http��https��������httpSchema: " + httpSchema); } String responseStr = null; try { Map<String, String> headers = new HashMap(); if (StringUtils.isNotBlank(accept)) { headers.put("Accept", accept); } else { headers.put("Accept", "*/*"); } if (StringUtils.isNotBlank(contentType)) { headers.put("Content-Type", contentType); } else { headers.put("Content-Type", "application/text;charset=UTF-8"); } CUSTOM_HEADERS_TO_SIGN_PREFIX.clear(); Request request = new Request(Method.POST_STRING, httpSchema + ArtemisConfig.host, (String)path.get(httpSchema), ArtemisConfig.appKey, ArtemisConfig.appSecret, 2000); request.setHeaders(headers); request.setSignHeaderPrefixList(CUSTOM_HEADERS_TO_SIGN_PREFIX); request.setQuerys(querys); request.setStringBody(body); Response response = Client.execute(request); responseStr = getResponseResult(response); } catch (Exception e) { logger.error("the Artemis PostString Request is failed[doPostStringArtemis]", e); } return responseStr; } public static String doPostBytesArtemis(Map<String, String> path, byte[] bytesBody, Map<String, String> querys, String accept, String contentType) { String httpSchema = (String)path.keySet().toArray()[0]; if ((httpSchema == null) || (StringUtils.isEmpty(httpSchema))) { throw new RuntimeException("http��https��������httpSchema: " + httpSchema); } String responseStr = null; try { Map<String, String> headers = new HashMap(); if (StringUtils.isNotBlank(accept)) { headers.put("Accept", accept); } else { headers.put("Accept", "*/*"); } if (bytesBody != null) { headers.put("Content-MD5", MessageDigestUtil.base64AndMD5(bytesBody)); } if (StringUtils.isNotBlank(contentType)) { headers.put("Content-Type", contentType); } else { headers.put("Content-Type", "application/text;charset=UTF-8"); } CUSTOM_HEADERS_TO_SIGN_PREFIX.clear(); Request request = new Request(Method.POST_BYTES, httpSchema + ArtemisConfig.host, (String)path.get(httpSchema), ArtemisConfig.appKey, ArtemisConfig.appSecret, 2000); request.setHeaders(headers); request.setSignHeaderPrefixList(CUSTOM_HEADERS_TO_SIGN_PREFIX); request.setQuerys(querys); request.setBytesBody(bytesBody); Response response = Client.execute(request); responseStr = getResponseResult(response); } catch (Exception e) { logger.error("the Artemis PostBytes Request is failed[doPostBytesArtemis]", e); } return responseStr; } public static String doPutStringArtemis(Map<String, String> path, String body, String accept, String contentType) { String httpSchema = (String)path.keySet().toArray()[0]; if ((httpSchema == null) || (StringUtils.isEmpty(httpSchema))) { throw new RuntimeException("http��https��������httpSchema: " + httpSchema); } String responseStr = null; try { Map<String, String> headers = new HashMap(); if (StringUtils.isNotBlank(accept)) { headers.put("Accept", accept); } else { headers.put("Accept", "*/*"); } if (StringUtils.isNotBlank(body)) { headers.put("Content-MD5", MessageDigestUtil.base64AndMD5(body)); } if (StringUtils.isNotBlank(contentType)) { headers.put("Content-Type", contentType); } else { headers.put("Content-Type", "application/text;charset=UTF-8"); } CUSTOM_HEADERS_TO_SIGN_PREFIX.clear(); Request request = new Request(Method.PUT_STRING, httpSchema + ArtemisConfig.host, (String)path.get(httpSchema), ArtemisConfig.appKey, ArtemisConfig.appSecret, 2000); request.setHeaders(headers); request.setSignHeaderPrefixList(CUSTOM_HEADERS_TO_SIGN_PREFIX); request.setStringBody(body); Response response = Client.execute(request); responseStr = getResponseResult(response); } catch (Exception e) { logger.error("the Artemis PutString Request is failed[doPutStringArtemis]", e); } return responseStr; } public static String doPutBytesArtemis(Map<String, String> path, byte[] bytesBody, String accept, String contentType) { String httpSchema = (String)path.keySet().toArray()[0]; if ((httpSchema == null) || (StringUtils.isEmpty(httpSchema))) { throw new RuntimeException("http��https��������httpSchema: " + httpSchema); } String responseStr = null; try { Map<String, String> headers = new HashMap(); if (StringUtils.isNotBlank(accept)) { headers.put("Accept", accept); } else { headers.put("Accept", "*/*"); } if (bytesBody != null) { headers.put("Content-MD5", MessageDigestUtil.base64AndMD5(bytesBody)); } if (StringUtils.isNotBlank(contentType)) { headers.put("Content-Type", contentType); } else { headers.put("Content-Type", "application/text;charset=UTF-8"); } CUSTOM_HEADERS_TO_SIGN_PREFIX.clear(); Request request = new Request(Method.PUT_BYTES, httpSchema + ArtemisConfig.host, (String)path.get(httpSchema), ArtemisConfig.appKey, ArtemisConfig.appSecret, 2000); request.setHeaders(headers); request.setSignHeaderPrefixList(CUSTOM_HEADERS_TO_SIGN_PREFIX); request.setBytesBody(bytesBody); Response response = Client.execute(request); responseStr = getResponseResult(response); } catch (Exception e) { logger.error("the Artemis PutBytes Request is failed[doPutBytesArtemis]", e); } return responseStr; } public static String doDeleteArtemis(Map<String, String> path, Map<String, String> querys, String accept, String contentType) { String httpSchema = (String)path.keySet().toArray()[0]; if ((httpSchema == null) || (StringUtils.isEmpty(httpSchema))) { throw new RuntimeException("http��https��������httpSchema: " + httpSchema); } String responseStr = null; try { Map<String, String> headers = new HashMap(); if (StringUtils.isNotBlank(accept)) { headers.put("Accept", accept); } else { headers.put("Accept", "*/*"); } if (StringUtils.isNotBlank(contentType)) { headers.put("Content-Type", contentType); } Request request = new Request(Method.DELETE, httpSchema + ArtemisConfig.host, (String)path.get(httpSchema), ArtemisConfig.appKey, ArtemisConfig.appSecret, 2000); request.setHeaders(headers); request.setSignHeaderPrefixList(CUSTOM_HEADERS_TO_SIGN_PREFIX); request.setQuerys(querys); Response response = Client.execute(request); responseStr = getResponseResult(response); } catch (Exception e) { logger.error("the Artemis DELETE Request is failed[doDeleteArtemis]", e); } return responseStr; } private static String getResponseResult(Response response) { String responseStr = null; int statusCode = response.getStatusCode(); if (String.valueOf(statusCode).startsWith("2")) { responseStr = response.getBody(); logger.info("the Artemis Request is Success,statusCode:" + statusCode + " SuccessMsg:" + response.getBody()); } else { String msg = response.getErrorMessage(); responseStr = response.getBody(); logger.error("the Artemis Request is Failed,statusCode:" + statusCode + " errorMsg:" + msg); } return responseStr; } }
package com.hikvision.ga; import java.util.HashMap; import java.util.Map; import com.hikvision.artemis.sdk.ArtemisHttpUtil; import com.hikvision.artemis.sdk.config.ArtemisConfig; /** * ��Class��������, ����������������������, ��������������������������������������. * ������������������: * [1] ���������������������� * https://open8200.hikvision.com/artemis-portal/document?version=4&docId=306&apiBlock=1 * [2] ����appKey������������ * https://open8200.hikvision.com/artemis-portal/document?version=4&docId=284&apiBlock=2 * @author zhangtuo * */ public class ArtemisTest { /** * ������������appKey��appSecret����static������������������. * [1 host] * ����������������open8200����,������������������,������������������,host��������.������open8200.hikvision.com * ����������������������������,host������������������ip,����1.0 ��������������9999.����2.0 ��������������443.����:10.33.25.22:9999 ����10.33.25.22:443 * [2 appKey��appSecret] * ��������������appKey��appSecret����. * * ps. ����������open8200��������������������,��������������,��������������,������������. * */ static { ArtemisConfig.host ="open8200.hikvision.com"; //artemis����������ip���� ArtemisConfig.appKey ="22425132"; //����appkey ArtemisConfig.appSecret ="mcsioUGkT5GRMZTvjwAC";//����appSecret } /** * ���������������������� * TODO ������������������/artemis */ private static final String ARTEMIS_PATH = "/artemis"; /** * [1] ������������������������������ * @return */ public static String callApiGetCameraInfos() { /** * https://open8200.hikvision.com/artemis-portal/document?version=4&docId=306&apiBlock=1 * ����API��������������,��������GET������Rest����, ������������������queryString, ����������������������: * http://ip:port/path?a=1&b=2 * ArtemisHttpUtil������������doGetArtemis��������, ����������������������������������. * ����������https, ��������������path����hashmap����,��put����key-value, querys������������. * start��������, size��������. */ String getCamsApi = ARTEMIS_PATH + "/api/common/v1/remoteCameraInfoRestService/findCameraInfoPage"; Map<String,String> querys = new HashMap<String,String>();//get�������������� querys.put("start", "0"); querys.put("size", "20"); Map<String, String> path = new HashMap<String, String>(2){ { put("https://", getCamsApi); } }; String result = ArtemisHttpUtil.doGetArtemis(path, querys,null,null); return result; } /** * [2] ����appKey������������ * @return */ public static String callApiGetSecurity() { /** * https://open8200.hikvision.com/artemis-portal/document?version=4&docId=284&apiBlock=2 * ����API��������������,��������GET������Rest����, * ����������������Parameter Path,����queryString����������. * ��������: /api/artemis/v1/agreementService/securityParam/appKey/{appKey} * {appKey}��Parameter Path * ����, doGetArtemis����������������null * * TODO ��������������appKey����������static��������������appKey */ String getSecurityApi = ARTEMIS_PATH + "/api/artemis/v1/agreementService/securityParam/appKey/22425132"; Map<String, String> path = new HashMap<String, String>(2){ { put("https://", getSecurityApi); } }; String result = ArtemisHttpUtil.doGetArtemis(path, null,null,null); return result; } public static void main(String[] args) { /** * ������������������ */ String camsResult = callApiGetCameraInfos(); /** * ����appKey������������ */ String securityResult = callApiGetSecurity(); System.out.println(camsResult); System.out.println(securityResult); } }