结构体
public static class NET_DVR_XML_CONFIG_INPUT extends Structure {
public int dwSize;
public Pointer lpRequestUrl;
public int dwRequestUrlLen;
public Pointer lpInBuffer;
public int dwInBufferSize;
public int dwRecvTimeOut;
public byte[] byRes = new byte[32];
}
public static class NET_DVR_XML_CONFIG_OUTPUT extends Structure {
public int dwSize;
public Pointer lpOutBuffer;
public int dwOutBufferSize;
public int dwReturnedXMLSize;
public Pointer lpStatusBuffer;
public int dwStatusSize;
public byte[] byRes = new byte[32];
}
boolean NET_DVR_STDXMLConfig(NativeLong lUserID, NET_DVR_XML_CONFIG_INPUT lpInputParam,
NET_DVR_XML_CONFIG_OUTPUT lpOutputParam);
调用,注意 strURL 和 strInbuffer
public static void stdXMLConfigTest1() {
int ISAPI_DATA_LEN = 1024 * 1024;
int ISAPI_STATUS_LEN = 4 * 4096;
HCNetSDK.NET_DVR_XML_CONFIG_INPUT struXMLInput = new HCNetSDK.NET_DVR_XML_CONFIG_INPUT();
struXMLInput.read();
struXMLInput.dwSize = struXMLInput.size();
// URL
String strURL = "GET /ISAPI/System/deviceInfo";
int iURLlen = strURL.length();
HCNetSDK.BYTE_ARRAY ptrUrl = new HCNetSDK.BYTE_ARRAY(iURLlen);
System.arraycopy(strURL.getBytes(), 0, ptrUrl.byValue, 0, strURL.length());
ptrUrl.write();
struXMLInput.lpRequestUrl = ptrUrl.getPointer();
struXMLInput.dwRequestUrlLen = iURLlen;
// 输入xml/json
String strInbuffer = "";
int iInBufLen = strInbuffer.length();
if (iInBufLen == 0) {
struXMLInput.lpInBuffer = null;
struXMLInput.dwInBufferSize = 0;
struXMLInput.write();
} else {
HCNetSDK.BYTE_ARRAY ptrInBuffer = new HCNetSDK.BYTE_ARRAY(iInBufLen);
ptrInBuffer.read();
ptrInBuffer.byValue = strInbuffer.getBytes();
ptrInBuffer.write();
struXMLInput.lpInBuffer = ptrInBuffer.getPointer();
struXMLInput.dwInBufferSize = iInBufLen;
struXMLInput.write();
}
HCNetSDK.BYTE_ARRAY ptrStatusByte = new HCNetSDK.BYTE_ARRAY(ISAPI_STATUS_LEN);
ptrStatusByte.read();
HCNetSDK.BYTE_ARRAY ptrOutByte = new HCNetSDK.BYTE_ARRAY(ISAPI_DATA_LEN);
ptrOutByte.read();
HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT struXMLOutput = new HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT();
struXMLOutput.read();
struXMLOutput.dwSize = struXMLOutput.size();
struXMLOutput.lpOutBuffer = ptrOutByte.getPointer();
struXMLOutput.dwOutBufferSize = ptrOutByte.size();
struXMLOutput.lpStatusBuffer = ptrStatusByte.getPointer();
struXMLOutput.dwStatusSize = ptrStatusByte.size();
struXMLOutput.write();
if (!hCNetSDK.NET_DVR_STDXMLConfig(lUserID, struXMLInput, struXMLOutput)) {
int iErr = hCNetSDK.NET_DVR_GetLastError();
System.out.println("NET_DVR_STDXMLConfig失败,错误号:" + iErr);
return;
} else {
struXMLOutput.read();
ptrOutByte.read();
ptrStatusByte.read();
String strOutXML = new String(ptrOutByte.byValue).trim();
System.out.println(strOutXML);
String strStatus = new String(ptrStatusByte.byValue).trim();
System.out.println(strStatus);
}
}
该代码示例展示了如何在Java中使用HCNetSDK库进行XML配置操作。它创建了两个结构体对象,分别用于输入和输出参数,然后设置URL和输入XML数据,并调用NET_DVR_STDXMLConfig函数执行配置请求。如果调用失败,它会打印错误号;成功则会读取并打印输出的XML和状态信息。
1341





