Qt对WCF服务的访问

本文介绍如何使用QtSOAP库支持WCF Webservice。详细讲述了调整SOAP XML格式以匹配WCF的要求,包括命名空间、Action及To节点的设置等。同时解决了QtSOAP不支持实体类的问题。
部署运行你感兴趣的模型镜像

QtSOAP是Qt对标准SOAP协议的支持库,遵循LGPL协议发布。现在公司的项目是基于微软WCF的Webservice做的,之前是再将服务发布JSON格式,客户端直接访问的,很简单。但是现在WCF的人们都很忙,没时间给修改这个东西。只好在客户端来做工作支持WCF的Webservice。

WCF的Webservice和QtSoap支持的格式有所区别。将envelope命名空间修改为了"http://www.w3.org/2003/05/soap-envelope" ,新增加了"http://www.w3.org/2005/08/addressing"

"http://schemas.datacontract.org/2004/07/"两个命名空间。第一个是在头部对Action和访问地址的定义,第二个是body中

对数据实体类命名空间的定义。

     soap XML头部新添加了Action和To节点属于addressing命名空间,并且必须要有属性

s:mustUnderstand="1"。

     soap XML Body结构为:

                     |method(访问方法)

                         |_class(参数实体类)   

                              |_class field(属性字段)

    属性字段如果为类,择需要嵌套定义class和其下所有字段。

    WCF的节点定义顺序似乎是有顺序限制的。所以我通过对访问的封包截获按照其顺序来定义SOAP的XML文件。





QtSoap的结构中缺少addressing和实体类的定义,头部没有Action和To节点,只支持字符串类型的方法参数添加,而不能支持对象类型,
他对方法节点下只能添加一级的Node。
这里需要对头部增加action和To的构造。构造好类的Node节点以字符串的形式传入,这里注意,这里Qt的Dom类会对<字符做转义处理
为&lt;,在发送soap请求前需要将其替换成<才行。
这样简单的对WCF webservice的支持就修改完成了。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值