gsoap 相关问题

gSOAP是一个开源的C和C ++软件开发工具包,用于SOAP / XML Web服务和通用(非SOAP)C / C ++ XML数据绑定。

在 gsoap 中生成 SOAP-ENV:Header 的子元素时出现问题

我想创建这样的东西: 我想创建这样的东西: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:wsc="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:chan="http://schemas.microsoft.com/ws/2005/02/duplex" xmlns:wsa5="http://www.w3.org/2005/08/addressing" xmlns:pt="http://www.onvif.org/ver10/pacs" xmlns:ns1="http://www.onvif.org/ver20/analytics/humanface" xmlns:ns2="http://www.onvif.org/ver20/analytics/humanbody" xmlns:xmime="http://tempuri.org/xmime.xsd" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:wsrfbf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" xmlns:wsrfr="http://docs.oasis-open.org/wsrf/r-2" xmlns:tac="http://www.onvif.org/ver10/accesscontrol/wsdl" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tev="http://www.onvif.org/ver10/events/wsdl" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl" xmlns:tmd="http://www.onvif.org/ver10/deviceIO/wsdl" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:trp="http://www.onvif.org/ver10/replay/wsdl" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:tse="http://www.onvif.org/ver10/search/wsdl"> <SOAP-ENV:Header> <dom0:SubscriptionId wsa5:IsReferenceParameter="true" xmlns:dom0="http://trololo/111/event">1715065920077</dom0:SubscriptionId> <dom1:SubscriptionId wsa5:IsReferenceParameter="true" xmlns:dom0="http://trololo/222/event">1715065920078</dom0:SubscriptionId> <wsa5:MessageID>urn:uuid:654721e3-4c2e-45ec-a1f3-f581309c6428</wsa5:MessageID> <wsa5:To SOAP-ENV:mustUnderstand="true">http://127.0.0.1:8088/mockEventsBinding/1715065920077</wsa5:To> <wsa5:Action SOAP-ENV:mustUnderstand="true">http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/RenewRequest</wsa5:Action> </SOAP-ENV:Header> <SOAP-ENV:Body> <wsnt:Renew> <wsnt:TerminationTime>PT30S</wsnt:TerminationTime> </wsnt:Renew> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 所以我需要在标头中添加几个子项(dom0:SubscriptionId、dom1:SubscriptionId) gsoap生成了这样一个结构: struct SOAP_CMAC SOAP_ENV__Header { public: /** MustUnderstand */ struct _wsse__Security *wsse__Security; /** XML DOM element node graph */ struct soap_dom_element *__any; /** Optional element 'wsa5:MessageID' of XML schema type 'wsa5:MessageID' */ char *wsa5__MessageID; /** Optional element 'wsa5:RelatesTo' of XML schema type 'wsa5:RelatesTo' */ struct wsa5__RelatesToType *wsa5__RelatesTo; /** Optional element 'wsa5:From' of XML schema type 'wsa5:From' */ struct wsa5__EndpointReferenceType *wsa5__From; /** MustUnderstand */ struct wsa5__EndpointReferenceType *wsa5__ReplyTo; /** MustUnderstand */ struct wsa5__EndpointReferenceType *wsa5__FaultTo; /** MustUnderstand */ char *wsa5__To; /** MustUnderstand */ char *wsa5__Action; /** Optional element 'chan:ChannelInstance' of XML schema type 'chan:ChannelInstanceType' */ struct chan__ChannelInstanceType *chan__ChannelInstance; public: /** Return unique type id SOAP_TYPE_SOAP_ENV__Header */ long soap_type() const { return SOAP_TYPE_SOAP_ENV__Header; } /** Constructor with member initializations */ SOAP_ENV__Header() : wsse__Security(), __any(), wsa5__MessageID(), wsa5__RelatesTo(), wsa5__From(), wsa5__ReplyTo(), wsa5__FaultTo(), wsa5__To(), wsa5__Action(), chan__ChannelInstance() { } /** Friend allocator */ friend SOAP_FMAC1 SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); }; 我需要使用 struct soap_dom_element *__any; 添加我的孩子。 然而这是不可能的。我只能添加带有子节点的单个节点,例如: <SOAP-ENV:Header><parent><child1/><child2/></parent></SOAP-ENV:Header> 但无法添加没有父项的子项。 (虽然onvif协议要求) 所以我尝试将 elts 设置为 __any,结果我只序列化了第一个子元素。看起来像 gsoap 错误。 创建结构的方式: auto first = soap_elt_new(m_event_proxy.Get(), nullptr, "test1"); first->next = soap_elt_new(m_event_proxy.Get(), nullptr, "test2"); first->next->next = soap_elt_new(m_event_proxy.Get(), nullptr, "test3"); m_event_proxy.Get()->header->__any = first; 其中 m_event_proxy 是 SoapInitializer<PullPointSubscriptionBindingProxy> ; 好吧,诀窍是像这样创建一个父空节点并设置它的类型: m_parameter = soap_elt_new(m_soap, nullptr, nullptr); m_parameter->type = SOAP_TYPE__XML; 然后我们应该将节点添加为子节点: auto parameter1 = soap_elt_new(m_soap, nullptr, "test1"); soap_add_elt(m_parameter, parameter1); auto parameter2 = soap_elt_new(m_soap, nullptr, "test2"); soap_add_elt(m_parameter, parameter2); 宾果游戏

回答 1 投票 0

通过socket.h调用connect()时使用GSoap返回EHOSTUNREACH

我目前正在构建一个基于 Gsoap 工具包的 iPhone 应用程序来连接到网络服务。一切正常,除了当我在断开并重新连接 3g 后尝试连接到我的服务时

回答 1 投票 0

gsoap 读取 CA 文件,Windows

我正在尝试使用我在tomcat中创建和部署的Web服务,在后者中启用ssl。 为了创建客户端代码,我使用 gsoap。我生成了 nedded 文件,并在我的 C+ 代码下面...

回答 1 投票 0

从C代码调用WCF

我正在使用需要调用 WCF 服务的本机 C 客户端应用程序(不是使用 Visual Studio 构建的)。我正在创建 WCF 服务,因此我可以完全控制它。 大多数信息...

回答 3 投票 0

独立的网络服务器来服务 HTTP GET 请求

我正在开发一个基于使用gsoap v2.8的网络服务器(FCGI)。 该网络服务器应响应传入的 HTTP GET 请求,但它不工作。 我知道 gsoap 提供了 HTTP 回调

回答 1 投票 0

如何使用适用于 C 和 C++ 的 GSOAP 访问 Amazon AWS S3?

我到处搜索这个,但找不到一个像样的代码。如何使用 GSOAP 访问 Amazon AWS S3 服务?

回答 2 投票 0

ONVIF:如何在EventBindingService::CreatePullPointSubscription中实现过滤器

我们正在使用 gSoap 2.8.106(因为这是 Yocto Kirkstone 提供的)。我们以 https://github.com/KoynovStas/onvif_srvd 为基础,开始实施 ONVIF S 和 T Profile。 T型材要求...

回答 1 投票 0

如何强制服务器仅使用TLSv1.2?

我有一个处理肥皂请求的服务器。它使用 gSOAP 2.8.14。目前它仅允许 TLSv1 连接。我需要强制它只允许 TLSv1.2 连接。 如果(soap_ssl_server_conte...

回答 1 投票 0

如何从http标头中删除gsoap版本

POST / engelen/calcserver.cgi HTTP/1.1 主机:websrv.cs.fsu.edu 用户代理:gSOAP/2.7 内容类型:text/xml;字符集=utf-8 内容长度:464 连接:关闭 SOAP 操作:“” 我怎样才能...

回答 2 投票 0

当我尝试将代码从 32 位迁移到 64 位时,Gsoap 向我发出与 -Wsign-conversion 相关的警告,如何解决此警告?

Gsoap 向我提供与 -Wsign-conversion 相关的警告,因为 gsoap 源文件是自动生成的,我无法解决这些警告。有人可以用这个来取悦我吗?提前致谢。 64位瓦...

回答 1 投票 0

gSoap - 服务调用返回 SOAP_OK,但返回结构未初始化

这是空指针问题的取消引用 - 在 ANSI C 和 gSoap 域中: 我正在使用以下公共 WSDL: http://www.mobilefish.com/services/web_service/countries.php?wsdl 和...

回答 1 投票 0

gSoap缺少stdsoap2.cpp,未定义对`soap_peek_element'的引用

我对gSoap有问题。我通过运行以下命令生成文件:wsdl2h -o calc.h http://www.genivia.com/calc.wsdl soapcpp2 -i -j -I / usr / share / gsoap / import calc.h之后,我包括了...

回答 2 投票 2

在gSoap服务器中执行服务器操作之前获取回调

是否可以在执行服务器操作之前从gSoap框架获取回调?我可以在文档中看到有一个回调(fserveloop),在...

回答 1 投票 0

SOAP 1.2错误:SOAP-ENV:Receiver [no subcode]

我们有一个用Java编写的Web服务(使用Axis 1.4)。我们使用gSOAP(2.8.101)以c ++代码访问此代码。我们正在使用OpenSSL(1.1.1e)。在RHEL 8上,我们看到SOAP 1.2错误。错误是因为...

回答 1 投票 0

“ soap_call__”函数仅返回soap上下文缓冲区中的最后一个TCP数据包

我有一个问题,因为我从拆分成许多TCP数据包的WEB服务获得答案。创建'MercuriusService.h'1)wsdl2h -o MercuriusService.h -t MRJ_typemap.dat -c ./WSDL/provider / ...

回答 1 投票 0

[使用mod_gsoap部署服务时如何在Gsoap中更改soap上下文的模式?

因此,我正在使用mod_gsoap部署使用gsoap开发的Web服务。我想设置肥皂上下文对象的SOAP_IO_KEEPALIVE和SOAP_IO_CHUNK模式来接受分块的请求。我如何实现...

回答 1 投票 0


在商业产品中使用gSOAP需要什么许可证? [关闭]

我想在将以商品形式销售的产品中使用gSOAP。我想到的用途是,我怀疑这是一个非常典型的工作流程-使用wsdl2h生成标头,使用标头...

回答 5 投票 16

gSOAP:如何使用SOAP代替POST进行特定服务/模式

首先,让我道歉,因为我对SOAP不太了解,我所说的大部分可能都是胡说八道。我将使用gSoap 2.8.4生成的一些客户端代码升级到gSoap 2.8 ....

回答 1 投票 0

使用CMake(make)和GCC构建和编译gSOAP项目

我对CMake有一个非常基本的问题,我将不胜感激。问题:当我尝试用纯GCC编译gSOAP时,一切都很好,但是当我使用CMake生成Makefile并...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.