一、discovery主要处理流程:
soap_serve()............................................................................soapServer.c
soap_serve_request().........................................................soapServer.c
soap_serve___wsdd__Probe()...................................soapServer.c
__wsdd__Probe()....................................................wsddapi.c
wsdd_event_Probe().......................................需要自己实现
二、namespace与typemap
namespace的定义,影响生成代码的结构、变量、函数名的定义,要始终保持一致。
如果不需要考虑Security属性,则可直接用typemap.dat生成(这种方式,如果测试工具发送的报文里Header中含有Security属性的话,会返回错误);
否则建议将WS-typemap.dat与typemap.dat结合起来,将typemap.dat中的namespace定义复制到WS-typemap.dat文件中,以WS-typemap.dat为模板生成头文件,并将生成的头文件中加上#import “wsse.h"来生成代码。
三、注意事项:
1.在wsdd_event_Probe事件中填写回复的具体信息
2.回复的header中wsa__RelatesTo的内容要与收到的消息的wsa__MessageID一致
3.ProbeMatch->Types = (char*)"dn:NetworkVideoTransmitter"; 类型值填写名字空间的前缀dn一定要与wsdd.nsmap文件中定义的前缀保持一致,看生成的wsdd文件里面"http://www.onvif.org/ver10/network/wsdl"的定义是什么,就填什么
4.wssapi.c中soap_wsa_reply()修改
该函数中的soap_lookup_plugin返回NULL,导致直接返回了。将该返回值的检查放在函数的最后部分来处理,中间用到该返回值的时候做个判断,保证其他数据正确赋值。
5.soapStub.h中需将#define SOAP_WSA_2005注释
四、其他可参考网上的实现
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。