onvif协议笔记

本文介绍了如何使用gSOAP进行ONVIF协议的网络摄像机(IPC)客户端程序开发,包括下载、编译gSOAP,生成并测试WebServices框架代码,以及解决stdsoap2.c中的namespaces问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

ONVIF官网
ONVIF协议网络摄像机(IPC)客户端程序开发(1):专栏开篇
onvif协议开发

二、gSOAP

gsoap官网

1、下载和编译

下载地址

#! /bin/sh
# 指定源码目录(解压源码)
GSOAP_SRC=gsoap-2.8
PWD=`pwd`
echo "build gsoap..."
cd $GSOAP_SRC
# 配置,指定安装目录
./configure --prefix=${PWD}/gsoap_x86
make -j8 && make install
cd -

2、生成,编译和测试

#! /bin/sh
# 指定使用工具目录,(编译出来的)
BIN_DIR=gsoap_x86/bin
PWD=`pwd`
# 指定生成代码目录
OUT_DIR=MobileCode
echo "auto code create"
echo ${PWD}
cd ${OUT_DIR}
# 生成头文件
${PWD}/../${BIN_DIR}/wsdl2h -o $1 -c -s -t typemap.dat $2
# 生成c文件
${PWD}/../${BIN_DIR}/soapcpp2 -2 -C -c -x -Iimport -Icustom $1
cd -
echo "OK"

最终会生成,以下文件
在这里插入图片描述
注意:stdsoap2.h 和 stdoap2.c 是从源码拷贝过来的。。。

测试是参考,ONVIF协议网络摄像机(IPC)客户端程序开发(4):使用gSOAP生成Web Services框架代码,感谢!!!!

#include <stdio.h>
#include "MobileCodeWSSoap.nsmap"
#include "soapH.h"

int main(int argc, char const *argv[])
{
    const char  *endpoint = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx";

    struct soap *soap = NULL;
    struct _ns1__getMobileCodeInfo          req;
    struct _ns1__getMobileCodeInfoResponse  resp;

    soap = soap_new(); 
    soap_set_mode(soap, SOAP_C_UTFSTRING);

    memset(&req, 0x00, sizeof(req));
    req.mobileCode = argv[1];
    req.userID     = NULL;

    if(SOAP_OK == soap_call___ns1__getMobileCodeInfo(soap, endpoint, NULL, &req, &resp)) {
        if (NULL != resp.getMobileCodeInfoResult) {
            printf("%s\n", resp.getMobileCodeInfoResult);
        }
    }

    soap_destroy(soap);                                                         // delete deserialized objects
    soap_end(soap);

    soap_free(soap);
    return 0;
}

问题1:
在这里插入图片描述
问题原因:
stdsoap2.c 使用了 namespaces 全局变量,而头文件可以看到,定义的是一个数组,并且有外部声明。
在这里插入图片描述
在这里插入图片描述

可以看到,,生成的文件 MobileCodeWSSoap.nsmap 中有定义 namespaces,,将其引入到,,,程序中就可以了。。。,如下如,,,引入之后编译通过。。
在这里插入图片描述
在这里插入图片描述

三、重要方法封装

期待。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值