| 
					
				 | 
			
			
				@ -0,0 +1,207 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.care.util; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.hikvision.artemis.sdk.ArtemisHttpUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.hikvision.artemis.sdk.config.ArtemisConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.http.HttpEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.http.HttpResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.InputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class ArtemisPostTest { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 请根据自己的appKey和appSecret更换static静态块中的三个参数. [1 host] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 如果你选择的是和现场环境对接,host要修改为现场环境的ip,https端口默认为443,http端口默认为80.例如10.33.25.22:443 或者10.33.25.22:80 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * appKey和appSecret请按照或得到的appKey和appSecret更改. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * TODO 调用前先要清楚接口传入的是什么,是传入json就用doPostStringArtemis方法,下载图片doPostStringImgArtemis方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					static { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						ArtemisConfig.host = "open.hikfirecloud.com";// 代理API网关nginx服务器ip端口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						ArtemisConfig.appKey = "23553385";// 秘钥appkey 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						ArtemisConfig.appSecret = "HfjuKlQnzTbn0mfxm5Vk";// 秘钥appSecret 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 能力开放平台的网站路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * TODO 路径不用修改,就是/artemis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					private static final String ARTEMIS_PATH = "/artemis"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 调用POST请求类型(application/json)接口,这里以入侵报警事件日志为例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * https://open.hikvision.com/docs/918519baf9904844a2b608e558b21bb6#e6798840 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					public static String callPostStringApi(String url,String body){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * http://10.33.47.50/artemis/api/scpms/v1/eventLogs/searches 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * 根据API文档可以看出来,这是一个POST请求的Rest接口,而且传入的参数值为一个json 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * ArtemisHttpUtil工具类提供了doPostStringArtemis这个函数,一共六个参数在文档里写明其中的意思,因为接口是https, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * 所以第一个参数path是一个hashmap类型,请put一个key-value,query为传入的参数,body为传入的json数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * 传入的contentType为application/json,accept不指定为null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * header没有额外参数可不传,指定为null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		final String getCamsApi = ARTEMIS_PATH +"/api/scpms/v1/eventLogs/searches"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		final String getCamsApi = ARTEMIS_PATH +"/api/firepro/v1/getCompany"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						final String getCamsApi = ARTEMIS_PATH + url; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						Map<String, String> path = new HashMap<String, String>(2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
							{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
								put("https://", getCamsApi);//根据现场环境部署确认是http还是https 
			 | 
		
	
		
			
				 | 
				 | 
			
			
							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String result = ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 调用POST请求下载图片类型接口,这里以获取访客记录中的图片接口为例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * https://open.hikvision.com/docs/a0a1a0a24701a00aa904f7b151f97410#f11f3208 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					public static void callPostImgStringApi(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * http://10.33.47.50/api/visitor/v1/record/pictures 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * 根据API文档可以看出来,这是一个POST请求的Rest接口,而且传入的参数值为一个json 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * ArtemisHttpUtil工具类提供了doPostStringImgArtemis这个函数,一共六个参数在文档里写明其中的意思,因为接口是https, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * 所以第一个参数path是一个hashmap类型,请put一个key-value,query为传入的参数,body为传入的json数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * 传入的contentType为application/json,accept不指定为null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * header没有额外参数可不传,指定为null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						final String VechicleDataApi = ARTEMIS_PATH +"/api/visitor/v1/record/pictures"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						Map<String,String> path = new HashMap<String,String>(2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
							{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
								put("http://",VechicleDataApi); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						JSONObject jsonBody = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("svrIndexCode", "8907fd9d-d090-43d3-bb3a-3a4b10dd7219"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("picUri", "/pic?0dd453i3c-e*046456451175m6ep=t=i2p*i=d1s*i3d0d*=*1b8i81f4747059503--bdf90a-855s5721z3b9i=1="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String body = jsonBody.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						System.out.println("body: "+body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						HttpResponse result = ArtemisHttpUtil.doPostStringImgArtemis(path,body,null,null,"application/json",null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
							HttpResponse resp = result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
							if (200==resp.getStatusLine().getStatusCode()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
								HttpEntity entity = resp.getEntity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
								InputStream in = entity.getContent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
								Tools.savePicToDisk(in, "d:/", "test4.jpg"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
								System.out.println("下载成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
							}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
								System.out.println("下载出错"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
							e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 消息订阅 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 980001	资源信息变更通知	1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 980002	报警实时信息	2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 980003	报警处理信息	3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 980004	故障实时信息	4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 980005	故障处理信息	5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 980006	设备在离线消息	6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 980007	监控点在离线消息	7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						 980008	监测实时信息	8 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					public static void subscription_info(String msgType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String url = "/api/firepro/v1/subscription/info"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						//消息类型	msgType	String	是 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						//回调URL	postUrl	String	是 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						JSONObject jsonBody = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("msgType", msgType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("postUrl", "http://ehr.yihu.com/wlyy/aqg/hvdevice/messageNotification"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						//http://ehr.yihu.com/wlyy/aqg/device/byOnlineStatus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						//http://ehr.yihu.com/wlyy/aqg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String body = jsonBody.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String StringeResult = callPostStringApi(url,body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						System.out.println("StringeResult结果示例: "+StringeResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 修改订阅 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					public void subscription_update(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String url = "/api/firepro/v1/subscription/update"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						JSONObject jsonBody = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("pageNo", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("pageSize", 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String body = jsonBody.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String StringeResult = callPostStringApi(url,body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						System.out.println("StringeResult结果示例: "+StringeResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 删除订阅 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					public void subscription_deletion(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String url = "/api/firepro/v1/subscription/deletion"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						JSONObject jsonBody = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("pageNo", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("pageSize", 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String body = jsonBody.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String StringeResult = callPostStringApi(url,body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						System.out.println("StringeResult结果示例: "+StringeResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 设备监测信息查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					public static void getMonitor(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String url = "/api/firepro/v1/getMonitor"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						JSONObject jsonBody = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("pageNo", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("pageSize", 10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("flagId", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("offset", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String body = jsonBody.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String StringeResult = callPostStringApi(url,body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						System.out.println("StringeResult结果示例: "+StringeResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 * 查询订阅 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					public void subscription_list(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String url = "/api/firepro/v1/subscription/list"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						JSONObject jsonBody = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("pageNo", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						jsonBody.put("pageSize", 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String body = jsonBody.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						String StringeResult = callPostStringApi(url,body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						System.out.println("StringeResult结果示例: "+StringeResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					public static void main(String[] args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		String url = "/api/firepro/v1/getCompany"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		JSONObject jsonBody = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		jsonBody.put("pageNo", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		jsonBody.put("pageSize", 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		String body = jsonBody.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		String StringeResult = callPostStringApi(url,body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		System.out.println("StringeResult结果示例: "+StringeResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		callPostImgStringApi(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
						getMonitor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		subscription_info("980001"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		subscription_info("980002"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		subscription_info("980003"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		subscription_info("980004"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		subscription_info("980005"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		subscription_info("980006"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		subscription_info("980007"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		subscription_info("980008"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |