SOAP应用简介

2016-02-19 12:49 5 1 收藏

有了下面这个SOAP应用简介教程,不懂SOAP应用简介的也能装懂了,赶紧get起来装逼一下吧!

【 tulaoshi.com - Web开发 】

使用高层API发送和接收SOAP消息
    在这个简单的例子中,服务器提供简单的算术服务:加法,减法,显示字符串(仅仅把输入的字符串回显出来)。为了创建这个应用程序,你需要在服务器和客户端创建不同的组件。在服务器这一端,你需要:
       创建一个ActiveX DLL
    创建一个WSDL文件列出服务以及服务中的操作
    创建一个WSML文件,把WSDL中描述的服务的操作对应到COM对象的方法
    创建一个ASP文件,处理SOAP请求
    在客户端,你需要:
  
    写一个VBScript调用服务器提供的操作
    在客户端和服务器端,这个简单的应用使用了高层API,例如 SoapClient 和 SoapServer 来发送和接受消息。
    在服务器端做以下工作
    创建一个ActiveX DLL
    打开VB,创建一个ActiveX DLL工程(注意,这个服务器上要安装IIS)
  
  把工程名改为DocSample1,类名改为Sample1
    在Sample1类中,添加以下代码:
    Public Function EchoString(ByVal testString As String) _
   As String
   EchoString = testString
  End Function
     Public Function AddNumbers(ByVal NumberOne As Double, _
   ByVal NumberTwo As Double) _
   As Double
   AddNumbers = NumberOne + NumberTwo
  End Function
     Public Function SubtractNumbers(ByVal NumberOne As Double, _
   ByVal NumberTwo As Double) _
   As Double
   SubtractNumbers = NumberOne - NumberTwo
  End Function
    选择菜单项 Make DocSample1.dll创建DLL文件
    创建虚拟路径
    在IIS环境下,创建一个Web虚拟路径,叫DocSample1
    创建WSDL文件
    在运行IIS的服务器上,把下面的文件DocSample1.wsdl复制到刚才建立的DocSample1路径下
    DocSample1.wsdl文件:
    ?xml version=’1.0’ encoding=’UTF-16’ ?
  definitions name =’DocSample1’ targetNamespace = ’http://localhost/DocSample1/DocSample1.wsdl’
   xmlns:tns=’http://localhost/DocSample1/DocSample1.wsdl’
   xmlns:xsd1=’http://localhost/DocSample1/DocSample1.xsd’
   xmlns:soap=’http://schemas.xmlsoap.org/wsdl/soap/’
   xmlns=’http://schemas.xmlsoap.org/wsdl/’
   types
   schema
   targetNamespace=
   ’http://localhost/DocSample1/DocSample1.xsd’
   xmlns=’http://www.w3.org/1999/XMLSchema’
   /schema
   /types
   message name=’EchoString’
   part name=’testString’ type=’string’/
   /message
   message name=’EchoStringResponse’
   part name=’Result’ type=’string’/
   /message
   message name=’AddNumbers’
   part name=’NumberOne’ type=’double’/
   part name=’NumberTwo’ type=’double’/
   /message
   message name=’AddNumbersResponse’
   part name=’Result’ type=’double’/
   /message
   message name=’SubtractNumbers’
   part name=’NumberOne’ type=’double’/
   part name=’NumberTwo’ type=’double’/
   /message
   message name=’SubtractNumbersResponse’
   part name=’Result’ type=’double’/
   /message
   portType name=’DocSample1PortType’
   operation name=’EchoString’ parameterOrder=’EchoStringInput1’
   input message=’tns:EchoString’ /
   output message=’tns:EchoStringResponse’ /
   /operation
   operation name=’AddNumbers’
   parameterOrder=’AddNumbersInput1 AddNumbersInput2’
   input message=’tns:AddNumbers’ /
   output message=’tns:AddNumbersResponse’ /
   /operation
   operation name=’SubtractNumbers’
   parameterOrder=’SubtractNumbersInput1 SubtractNumbersInput2’
   input message=’tns:SubtractNumbers’ /
   output message=’tns:SubtractNumbersResponse’ /
   /operation
   /portType
   binding name=’DocSample1Binding’ type=’tns:DocSample1PortType’
   soap:binding style=’rpc’
   transport=’http://schemas.xmlsoap.org/soap/http’ /
   operation name=’EchoString’
   soap:operation
   soapAction=’http://localhost/DocSample1/DocSample1.asp’ /
   input
   soap:body use=’encoded’
   namespace=’http://localhost/DocSample1/DocSample1.xsd’
   encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’ /
   /input
   output
   soap:body use=’encoded’
   namespace=’http://localhost/DocSample1/DocSample1.xsd’
   encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’ /
   /output
   /operation
   operation name=’AddNumbers’
   soap:operation
   soapAction=’http://localhost/DocSample1/DocSample1.asp’ /
   input
   soap:body use=’encoded’
   namespace=’http://localhost/DocSample1/DocSample1.xsd’
   encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’ /
   /input
   output
   soap:body use=’encoded’
   namespace=’http://localhost/DocSample1/DocSample1.xsd’
   encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’ /
   /output
   /operation
   operation name=’SubtractNumbers’
   soap:operation
   soapAction=’http://localhost/DocSample1/DocSample1.asp’ /
   input
   soap:body use=’encoded’
   namespace=’http://localhost/DocSample1/DocSample1.xsd’
   encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’ /
   /input
   output
   soap:body use=’encoded’
   namespace=’http://localhost/DocSample1/DocSample1.xsd’
   encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’ /
   /output
   /operation
   /binding
   service name=’DocSample1’
   port name=’DocSample1PortType’ binding=’tns:DocSample1Binding’
   soap:address
   location=’http://localhost/DocSample1/DocSample1.asp’ /
   /port
   /service
  /definitions
    

 

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

     创建WSML文件
    在运行IIS的服务器上,把下面的文件DocSample1.wsml复制到刚才建立的DocSample1路径下
    DocSample1.wsml文件:
    ?xml version=’1.0’ encoding=’UTF-16’ ?
   !-- Generated 12/14/00 by Microsoft SOAP SDK WSDL File Generator, Version 1.0 --
  servicemapping name=’DocSample1’
   service name=’DocSample1’
   using PROGID=’DocSample1.Sample1’
   cachable=’0’
   ID=’DocSample1Object’ /
   port name=’DocSample1PortType’
   operation name=’EchoString’
   execute uses=’DocSample1Object’
   method=’EchoString’dispID=’1610809344’
   parameter callIndex=’1’ name=’testString’
   elementName=’testString’ /
   parameter callIndex=’-1’ name=’retval’
   elementName=’Result’ /
   /execute
   /operation
   operation name=’AddNumbers’
   execute uses=’DocSample1Object’
   method=’AddNumbers’ dispID=’1610809345’
   parameter callIndex=’1’ name=’NumberOne’
   elementName=’NumberOne’ /
   parameter callIndex=’2’ name=’NumberTwo’
   elementName=’NumberTwo’ /
   parameter callIndex=’-1’ name=’retval’ elementName=’Result’ /
   /execute
   /operation
   operation name=’SubtractNumbers’
   execute uses=’DocSample1Object’
   method=’SubtractNumbers’ dispID=’1610809346’
   parameter callIndex=’1’ name=’NumberOne’
   elementName=’NumberOne’ /
   parameter callIndex=’2’ name=’NumberTwo’
   elementName=’NumberTwo’ /
   parameter callIndex=’-1’ name=’retval’ elementName=’Result’ /
   /execute
   /operation
  /port
   /service
  /servicemapping
    把文件中ProgID改为你刚才创建的ActiveX DLL的ProgID(如果严格按步骤做,这个例子是不用改的)
    创建ASP应用
    在运行IIS的服务器上,把下面的文件DocSample1.asp复制到刚才建立的DocSample1路径下
    %@ LANGUAGE = VBScript %
  % Response.ContentType = "text/xml" %
  %
   set soapserver = CreateObject("MSSOAP.SoapServer")
   wsdl = Server.MapPath("DocSample1.wsdl")
   wsml = Server.MapPath("DocSample1.wsml")
   call soapserver.init(wsdl, wsml)
   call soapserver.SoapInvoke(request, response)
  %
    在客户端做以下工作
    创建一个VBScript应用
    在客户端,创建一个文件,包含以下代码
    set soapclient = CreateObject("MSSOAP.SoapClient")
  Call soapclient.mssoapinit("http://localhost/DocSample1/DocSample1.wsdl", "DocSample1", "DocSample1PortType")
  wscript.echo soapclient.EchoString("Bob")
  wscript.echo soapclient.AddNumbers(2,3)
  wscript.echo soapclient.SubtractNumbers(3,2)
  
  On Error Resume Next
  wscript.echo soapclient.faultcode
  wscript.echo soapclient.faultstring
  wscript.echo soapclient.faultactor
  wscript.echo soapclient.detail
    保存文件为clientDocSample1.vbs.
    测试
    打开命令行窗口,输入cscript clientDocSample1.vbs
    注:
    1.cscript是一个在命令行方式下运行script文件的东东,一般格式如下:
    cscript [//host option] scriptfile
    host option以"//"开头,设置一些参数 如
    cscript //noLogo XXX.vbs或者cscript //Logo XXX.vbs,后面一个多了一行“版权所有”之类的话
    2.报读WSDL文件错误时,试试将?xml version=’1.0’ encoding=’UTF-16’ ?改为?xml
     version=’1.0’ encoding=’gb2312’ ?
    3.在Advanced Server下面,要注意DLL的执行权限
    理解服务器端的开发
    在这个简单的应用中,你首先在服务器端创建创建DocSample1.dll。这个DLL实现简单的算术操作(EchoString,
    AddNumbers,和SubtractNumbers)。注意,如果没有在运行IIS的服务器上创建这个DLL,必须将之复制到服务器上,并注册。
    DocSample1.wsdl:这个WSDL文件描述了服务以及服务中包含的操作: EchoString, AddNumber,和
     SubtractNumbers. 它定义了客户发送SOAP消息时必须遵从的格式。
    DocSample1.wsml:这个WSML文件是Microsoft SOAP实现中特定的文件。
    DocSample1.asp: 这个ASP文件处理SOAP请求。
  

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

来源:https://www.tulaoshi.com/n/20160219/1602053.html

延伸阅读
标签: Web开发
简单对象访问协议(Simple Object Access Protocol,SOAP)实际上是一种 Web 服务技术,但 Web 服务中客户机和服务器之间的数据交换格式是通过灵活的 XML 模式实现的。 Web 服务的主要优点是客户机和服务器通过网络进行信息和数据交换的互操作性的层次。SOAP 标准使用 XML 以一种体系结构中立的格式来构造数据,定义数据类型和信息。 对于编...
第一个Applet小应用程序: 1.java文件代码 代码如下: import java.awt.*; import java.applet.Applet; public class HelloWorld extends Applet{ String text; puvlic void init(){ text = "Hello World"; //this指的是所在类(Hello World)的对象,但是H继承了Applet,Applet继承了JPanel类,JPanel类继承了Component。所以可以用thi...
SOAP(Simple Object Access Protocal) 技术有助于实现大量异构程序和平台之间的互操作性,从而使存在的应用能够被广泛的用户所访问。SOAP是把成熟的基于HTTP的WEB技术与XML的灵活性和可扩展性组合在了一起。这篇文章带你全面回顾对象远程进程调用(ORPC)技术的历程,以帮助你理解SOAP技术的基础,以及它克服存在技术(如CORBA和DCOM)的许多缺...
大家都知道在现实的生活中,我们每个人都有属于自己的一个ID号--身份证号码,你可以去派出所把你的姓名改了,但是你的身份证号却不能随着你自己的姓名更改而更改。在网络世界中,我们常常可以听到IP地址的概念,不过MAC地址这个专业术语却很少被人提起,我们往往只知道IP地址,而MAC地址则是幕后英雄。正如我们在日常交流的时候,常常叫别...
标签: PHP
转自:http://www.webdn.com/web_file/program/php/0602080306/ 【摘 要】 本文尝试对PHP程序加速的各个方面进行探索,包括必要性以及从不同角度采取的具体措施。希望有助于读者了解PHP程序加速,并应用于实际。   (一)简介 本文尝试对PHP程序加速的各个方面进行探索,包括必要性以及从不同角度采取的具体措施...

经验教程

1000

收藏

8
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部