平台一:设备控制器调用方式
/**
* 控制器枚举类
*/
public enum MediaCtrSeasonEnum {
MultimediaOn, MultimediaOff
}
Server实现
/**
* 定义控制器URL的变量
*/
private static HttpClient httpClient = new DefaultHttpClient();
private static HttpPost httppost;
private static HttpResponse response;
/**
* 控制开关
*/
public ResponseEntity<?> controlSwitch(MediaControlSwitchRequest mediaControlSwitchRequest, HttpServletRequest request){
Criteria<BMediaControlDevice> deviceCriteria = new Criteria<>();
deviceCriteria.add(Restrictions.eq("mcdId", mediaControlSwitchRequest.getMcdId(), false));
deviceCriteria.add(Restrictions.eq("isdeleted", false, false));
Optional<BMediaControlDevice> oldOptiona=mediaControlDeviceRepository.findOne(deviceCriteria);
//当设备为NULL时
if (!oldOptiona.isPresent()) {
String msg = SysValidateMessageConfig.getProperty("BMediaControlDevice_Null_Error");
CommonReturnMessage message = new CommonReturnMessage("204", msg, null);
return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
}
String ip=oldOptiona.get().getIpAddress();
String port=String.valueOf(oldOptiona.get().getPort());
//当IP和端口NULL时
if(ip.equals("")||port.equals("null")){
String msg = SysValidateMessageConfig.getProperty("BMediaControlDevice_Ip_Port_Null_Error");
CommonReturnMessage message = new CommonReturnMessage("204", msg, null);
return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
}
try{
String ControlVal=mediaControlSwitchRequest.getControlVal();
//通过valueOf,获取ControlVal的枚举类型
MediaCtrSeasonEnum controlEnum = MediaCtrSeasonEnum.valueOf(ControlVal);
//直接初始化
MediaCtrSeasonEnum controlEnumVal = MediaCtrSeasonEnum.valueOf(controlEnum.toString());
//初始化URL
String url="";
//JsonObject
JSONObject jsonParam;
//实例化对象
StringEntity entity;
switch (controlEnumVal){
//中控开启
case MultimediaOn:
url = "http://127.0.0.1:8000/api/mediaStart";
// 创建一个httppost请求
httppost = new HttpPost(url);
jsonParam = new JSONObject();
//传参请求ip和port端口
jsonParam.put("ip", ip);
jsonParam.put("port", port);
//中文乱码问题
entity = new StringEntity(jsonParam.toString(), "utf-8");// 解决中 文乱码问题
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httppost.setEntity(entity);
//发送请求
response = httpClient.execute(httppost);
//公共处理方法(返回结果处理)
commonControlSwitch();
//关闭流
httppost.releaseConnection();
System.out.println("设备开");
break;
//关闭
case MultimediaOff:
url = "http://127.0.0.1:8001/api/mediaClose";
// 创建一个httppost请求
httppost = new HttpPost(url);
jsonParam = new JSONObject();
//传参请求ip和port端口
jsonParam.put("ip", ip);
jsonParam.put("port", port);
//中文乱码问题
entity = new StringEntity(jsonParam.toString(), "utf-8");// 解决中文乱码问题
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httppost.setEntity(entity);
response = httpClient.execute(httppost);
//公共处理方法(返回结果处理)
commonControlSwitch();
//关闭流
httppost.releaseConnection();
System.out.println("设备关");
break;
}
}catch (Exception e){
CommonReturnMessage message = new CommonReturnMessage("204", "操作失败", response);
return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
}
MsgResponse response = new MsgResponse();
response.setCode("200");
response.setMessage("操作成功");
CommonReturnMessage message = new CommonReturnMessage("200", null, response);
return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
}
/**
* 提取设备控制器-公共处理方法
* @return
*/
public ResponseEntity<?> commonControlSwitch(){
try {
String strResult = EntityUtils.toString(response.getEntity());
JSONObject jsonData = JSONObject.parseObject(strResult);
JSONObject info = jsonData.getJSONObject("data");
Iterator iter = info.entrySet().iterator();
String key="";
String value="";
Map<String, String> map = new HashMap<String, String>();
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
MsgResponse response = new MsgResponse();
CommonReturnMessage message=null;
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
//获取key的值
key = entry.getKey().toString();
//获取value的值
value = entry.getValue().toString();
map.put(key,value);
}
//将map的put结果放入list集合
list.add(map);
System.out.println(list);
//循环list取第一个值
for(int i=0;i<1;i++){
System.out.println(list.get(i));
//将对应的值写入response对应的code和message
response.setCode(list.get(i).get("code"));
response.setMessage(list.get(i).get("message"));
//组装message 结果
message = new CommonReturnMessage(list.get(i).get("code"),null, response);
}
//返回结果信息
return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
}
MsgResponse response = new MsgResponse();
response.setCode("204");
response.setMessage("操作失败");
CommonReturnMessage message = new CommonReturnMessage("204", null, response);
return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
}
请求平台二控制器
/**
* 设备开启
* @param mediaRequest
* @param bindingResult
* @param request
* @return
*/
@RequestMapping(value = "/mediaStart", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public HttpEntity<?> mediaStart(@Valid @RequestBody MediaRequest mediaRequest, BindingResult bindingResult,
HttpServletRequest request
) {
if (bindingResult.hasErrors()) {
return new ResponseEntity<>(new SysMessage(bindingResult.getFieldError().getDefaultMessage()),
HttpStatus.BAD_REQUEST);
}
ResponseEntity<?> responseEntity = null;
try
{
responseEntity = mediaCtrService.mediaStart( request,mediaRequest);
} catch (Exception e)
{
logger.error(e.getMessage(), e);
return new SysMessage(e).buildErrorResponseEntity();
}
return responseEntity;
}
Server实现
/**
* //设备开机/
* 4B 06 00 00 01 XX 00 00 00 5A
* XX 为开关状态,0x00-关,0x01-开
*/
public ResponseEntity<?> mediaStart(HttpServletRequest request, MediaRequest mediaRequest){
String code="";
try {
byte[] dataBytes = new byte[10];
dataBytes[0] = (byte) 0x4B;
dataBytes[1] = (byte) 0x06;
dataBytes[2] = (byte) 0x00;
dataBytes[3] = (byte) 0x00;
dataBytes[4] = (byte) 0x01;
//控制代码
dataBytes[5] = (byte) 0x01;
dataBytes[6] = (byte) 0x00;
dataBytes[7] = (byte) 0x00;
dataBytes[8] = (byte) 0x00;
dataBytes[9] = (byte) 0x5A;
//向ip地址发送
String ip=mediaRequest.getIp();
System.out.println(mediaRequest.getPort());
int port=mediaRequest.getPort();
InetAddress destHost = InetAddress.getByName(ip);
Socket socket = new Socket(destHost, port);//创建Socket类对象
DataInputStream in = new DataInputStream(socket
.getInputStream());// 读取传过来信息的DataInputStream
DataOutputStream out = new DataOutputStream(socket
.getOutputStream());// 发送信息的DataOutputStream
out.write(dataBytes);
Thread.sleep(1000*5);
byte b[]=new byte[64];
in.read(b);
System.out.println(HexStringUtils.bytesToHexString(b));
code=HexStringUtils.bytesToHexString(b);
// System.out.println(HexStringUtils.toHexString(b));
socket.close();
}catch (Exception e){
System.out.println("异常:"+e.getMessage());
}
MsgResponse response=new MsgResponse();
CommonReturnMessage message=null;
//判断执行成功与否
if (StringUtils.isEmpty(code)){
response.setCode("204");
response.setMessage("执行失败");
message = new CommonReturnMessage("204", null, response);
}else {
response.setCode("200");
response.setMessage("执行成功");
message = new CommonReturnMessage("200", null, response);
}
return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
}