使用RTC调用WebService

本文介绍了如何使用RTC(Real-Time Communication)技术调用WebService。主要内容包括WebService的协议解析,详细讲解了调用过程,并提供了Delphi语言的示例代码,展示了一种通用的调用WebService的函数实现。
摘要由CSDN通过智能技术生成

使用RTC调用WebService

WebService的协议
   WebService协议,就目前来说基本上是一个已经趋于过时的东西了,目前最主流的微服务端SDK都基本上采用了Restful的方式来作为交互模型,其最主要的原因是应该是WebService传递数据的冗余性比较高。虽然已经趋于过时了,但是不少的服务还是采用了WebService来作为API的服务提供者,就拿我们公司来说,本来我是让Web组的别用WebService作为服务API来提供服务的,但是Web组的说,WebService他写起来最简单,特么的C#中直接[WebMethod]标记一下就作为WebService服务了,编写起来确实很方便,所以估计我想很多人估计也是类似的想法了。  
   说了这么多,其实都是废话哈哈,继续回到其协议上来说,WebService使用的是SOAP协议,soap协议只是用来封装消息用的。封装后的消息你可以通过各种已有的协议来传输,比如http,tcp/ip,smtp,等等,你甚至还一次用自定义的协议,当然也可以用https协议。那么WebService自然就是Http版本的SOAP传递数据了,说白了就是使用Http提交Xml格式数据,没啥太多的玄机在里面,知道了WebService就是Http提交XML数据之后,我们可做的事情就很简单了,那么就是模拟Http提交Xml数据就完事了呗,这个提交比较简单,麻烦的就是对于这个提交的Xml数据的构造上,这个就可以去看SOAP的协议格式文档了。其协议格式,记得是有有2个版本,一个SOAPV1,还有一个V2,两个的投递方式有一点区别,具体是啥的,好像是SOAPV1 Http投递的时候,HttpHeader中需要带上SOAPAction这个参数还是啥的,忘了,这个可以查看相关的协议文档。其投递的格式基本上类似如下:
<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
       <m:WebServiceFuncName xmlns:m="Some-URI">
           <symbol>DIS</symbol>
       </m:WebServiceFuncName>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

也有类似这种的

<?xml version="1.0" encoding="utf-8"?>
   <SOAP-ENV:Envelope xmlns:ns0="http://webservice.hisinterface.hzyl.aspirecn.com/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <ns1:Body>
   <ns0:ObjectParam>
      <arg0>%s</arg0>
      <arg1>%s</arg1>
   </ns0:ObjectParam>
   </ns1:Body>
   </SOAP-ENV>

调用WebService

WebService在Delphi中,其实Delphi是提供了调用WebService的方法的,这种Delphi自带的调用模式,我就不讲了,用起来比较简单,不过有一点很蛋疼,就是对于某些WebService,使用Delphi自带的方式自动创建的调用模式会各种调用失败,记得一直到XE7的版本都不行,更高的版本就不知道行不行了,一直使用RTC来模拟提交Http的一些相关请求,于是想到用WebService来做处理,根据前面的分析,已经很清楚了,只要构建好要投递的WebService的Xml内容,那么模拟提交就很简单了,至于这个模拟投递的内容如何处理,可以根据SOAP的协议格式来做处理,一般是
<m:WebServiceFuncName xmlns:m="WebServiceNameSpace">
  <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值