Onvif客户端中GetProfiles接口返回值-1

OnvifServer端用wireshark抓包GetProfiles接口返回200OK,但是Onvif客户端中soap_call_trt_GetProfiles接口返回值-1,导致添加设备获取通道失败,请问有人知道为什么吗

【以下回答由 GPT 生成】

我可以尝试帮助解决这个问题。首先,返回值为-1可能表示在调用soap_call_trt_GetProfiles接口时出现了错误。要解决这个问题,我建议您按照以下步骤进行排查:

  1. 确保您的代码正确连接到Onvif服务器,并且已经建立了有效的连接。您可以通过检查其他Onvif请求的返回值或使用网络调试工具来验证此步骤。

  2. 检查您的代码的soap_call_trt_GetProfiles函数调用是否正确。确保您已正确设置了相关参数,如SOAP_ACTION和soap_endpoint。您可以参考Onvif的文档或代码示例来确认是否正确设置了这些参数。

下面是一个可能的示例代码:

#include "soapH.h"
#include "soapStub.h"

int main() {
  // 初始化soap环境
  struct soap soap;
  soap_init(&soap);

  // 设置Onvif服务器的地址和端口
  const char* endpoint = "http://localhost:8888/onvif";

  // 调用GetProfiles接口
  _trt__GetProfiles trt__GetProfiles;
  _trt__GetProfilesResponse trt__GetProfilesResponse;
  if (soap_call_trt_GetProfiles(&soap, endpoint, "", &trt__GetProfiles, trt__GetProfilesResponse) == SOAP_OK) {
    // 成功调用GetProfiles接口
  } else {
    // 调用GetProfiles接口失败
    std::cout << "Call to GetProfiles failed!" << std::endl;
  }

  // 清理soap环境
  soap_destroy(&soap);
  soap_end(&soap);
  soap_done(&soap);

  return 0;
}
  1. 检查Onvif服务器端的配置。确保服务器已正确配置并正常运行,可以通过其他客户端测试此接口是否可用。

如果以上步骤都没有找到问题所在,我建议您查看Onvif的文档或在Onvif的开发者社区寻求帮助。由于Onvif是一个标准协议,并且在不同的设备上可能会有不同的实现,所以可能需要更多专业的Onvif相关知识才能找到解决办法。

如果这个答案对您有帮助,请您告诉我。如果您还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^