transIsapi.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.gzlh.device.face.hkutils;
  2. import com.gzlh.config.hksdk.HCNetSDK;
  3. /**
  4. * @create 2021-04-13-15:23
  5. * 功能:透传接口实现,透传ISAPI命令
  6. */
  7. public final class transIsapi {
  8. public static String get_isapi(int lUserID, String url,HCNetSDK hcNetSDK) {
  9. HCNetSDK.NET_DVR_XML_CONFIG_INPUT struXMLInput = new HCNetSDK.NET_DVR_XML_CONFIG_INPUT();
  10. struXMLInput.read();
  11. HCNetSDK.BYTE_ARRAY stringRequest = new HCNetSDK.BYTE_ARRAY(1024);
  12. stringRequest.read();
  13. //输入ISAPI协议命令
  14. System.arraycopy(url.getBytes(), 0, stringRequest.byValue, 0, url.length());
  15. stringRequest.write();
  16. struXMLInput.dwSize = struXMLInput.size();
  17. struXMLInput.lpRequestUrl = stringRequest.getPointer();
  18. struXMLInput.dwRequestUrlLen = url.length();
  19. struXMLInput.lpInBuffer = null;
  20. struXMLInput.dwInBufferSize = 0;
  21. struXMLInput.write();
  22. HCNetSDK.BYTE_ARRAY stringXMLOut = new HCNetSDK.BYTE_ARRAY(8 * 1024);
  23. stringXMLOut.read();
  24. HCNetSDK.BYTE_ARRAY struXMLStatus = new HCNetSDK.BYTE_ARRAY(1024);
  25. struXMLStatus.read();
  26. HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT struXMLOutput = new HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT();
  27. struXMLOutput.read();
  28. struXMLOutput.dwSize = struXMLOutput.size();
  29. struXMLOutput.lpOutBuffer = stringXMLOut.getPointer();
  30. struXMLOutput.dwOutBufferSize = stringXMLOut.size();
  31. struXMLOutput.lpStatusBuffer = struXMLStatus.getPointer();
  32. struXMLOutput.dwStatusSize = struXMLStatus.size();
  33. struXMLOutput.write();
  34. if (!hcNetSDK.NET_DVR_STDXMLConfig(lUserID, struXMLInput, struXMLOutput)) {
  35. int iErr = hcNetSDK.NET_DVR_GetLastError();
  36. System.err.println("NET_DVR_STDXMLConfig失败,错误号" + iErr+"----URL:"+url);
  37. return null;
  38. } else {
  39. stringXMLOut.read();
  40. System.out.println("输出文本大小:" + struXMLOutput.dwReturnedXMLSize);
  41. //打印输出XML文本
  42. String strOutXML = new String(stringXMLOut.byValue).trim();
  43. System.out.println(strOutXML);
  44. struXMLStatus.read();
  45. String strStatus = new String(struXMLStatus.byValue).trim();
  46. System.out.println(strStatus);
  47. return strOutXML;
  48. }
  49. }
  50. public static String put_isapi(int lUserID, String url, String inputXml,HCNetSDK hcNetSDK) {
  51. HCNetSDK.NET_DVR_XML_CONFIG_INPUT struXMLInput = new HCNetSDK.NET_DVR_XML_CONFIG_INPUT();
  52. struXMLInput.read();
  53. HCNetSDK.BYTE_ARRAY stringRequest = new HCNetSDK.BYTE_ARRAY(1024);
  54. stringRequest.read();
  55. //输入ISAPI协议命令
  56. System.arraycopy(url.getBytes(), 0, stringRequest.byValue, 0, url.length());
  57. stringRequest.write();
  58. struXMLInput.dwSize = struXMLInput.size();
  59. struXMLInput.lpRequestUrl = stringRequest.getPointer();
  60. struXMLInput.dwRequestUrlLen = url.length();
  61. HCNetSDK.BYTE_ARRAY ptrInBuffer = new HCNetSDK.BYTE_ARRAY(inputXml.length());
  62. ptrInBuffer.read();
  63. System.arraycopy(inputXml.getBytes(), 0, ptrInBuffer.byValue, 0, inputXml.length());
  64. ptrInBuffer.write();
  65. struXMLInput.lpInBuffer = ptrInBuffer.getPointer();
  66. struXMLInput.dwInBufferSize = inputXml.length();
  67. struXMLInput.write();
  68. HCNetSDK.BYTE_ARRAY stringXMLOut = new HCNetSDK.BYTE_ARRAY(8 * 1024);
  69. stringXMLOut.read();
  70. HCNetSDK.BYTE_ARRAY struXMLStatus = new HCNetSDK.BYTE_ARRAY(1024);
  71. struXMLStatus.read();
  72. HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT struXMLOutput = new HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT();
  73. struXMLOutput.read();
  74. struXMLOutput.dwSize = struXMLOutput.size();
  75. struXMLOutput.lpOutBuffer = stringXMLOut.getPointer();
  76. struXMLOutput.dwOutBufferSize = stringXMLOut.size();
  77. struXMLOutput.lpStatusBuffer = struXMLStatus.getPointer();
  78. struXMLOutput.dwStatusSize = struXMLStatus.size();
  79. struXMLOutput.write();
  80. if (!hcNetSDK.NET_DVR_STDXMLConfig(lUserID, struXMLInput, struXMLOutput)){
  81. int iErr = hcNetSDK.NET_DVR_GetLastError();
  82. System.err.println("NET_DVR_STDXMLConfig失败,错误号" + iErr+"----URL:"+url);
  83. return null;
  84. } else {
  85. stringXMLOut.read();
  86. System.out.println("输出文本大小:" + struXMLOutput.dwReturnedXMLSize);
  87. //打印输出XML文本
  88. String strOutXML = new String(stringXMLOut.byValue).trim();
  89. struXMLStatus.read();
  90. String strStatus = new String(struXMLStatus.byValue).trim();
  91. return strOutXML;
  92. }
  93. }
  94. }