OnvifServer端用wireshark抓包GetProfiles接口返回200OK,但是Onvif客户端中soap_call_trt_GetProfiles接口返回值-1,导致添加设备获取通道失败,请问有人知道为什么吗
【以下回答由 GPT 生成】
我可以尝试帮助解决这个问题。首先,返回值为-1可能表示在调用soap_call_trt_GetProfiles接口时出现了错误。要解决这个问题,我建议您按照以下步骤进行排查:
确保您的代码正确连接到Onvif服务器,并且已经建立了有效的连接。您可以通过检查其他Onvif请求的返回值或使用网络调试工具来验证此步骤。
检查您的代码的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;
}
如果以上步骤都没有找到问题所在,我建议您查看Onvif的文档或在Onvif的开发者社区寻求帮助。由于Onvif是一个标准协议,并且在不同的设备上可能会有不同的实现,所以可能需要更多专业的Onvif相关知识才能找到解决办法。
如果这个答案对您有帮助,请您告诉我。如果您还有其他问题,请随时提问。