Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >方法关键字SoapRequestMessage,SoapTypeNameSpace,SqlName,SqlProc

方法关键字SoapRequestMessage,SoapTypeNameSpace,SqlName,SqlProc

作者头像
用户7741497
发布于 2022-07-07 02:46:03
发布于 2022-07-07 02:46:03
43200
代码可运行
举报
文章被收录于专栏:hml_知识记录hml_知识记录
运行总次数:0
代码可运行

第八十一章 方法关键字 - SoapRequestMessage

当多个web方法具有相同的SoapAction时使用此方法。 在默认场景中,该关键字指定请求消息的SOAP正文中的顶级元素的名称。 仅适用于定义为web服务web客户端的类。

用法

要在请求消息的SOAP体中指定顶级元素的名称,请使用以下语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Method name(formal_spec) As returnclass [ WebMethod, SoapAction = "MyAct", SoapRequestMessage="MyReqMessage" ] 
{    //implementation }

其中soaprequestmessage是有效的XML标识符。

详解

注意:此关键字仅对包装的文档/文字document/literal消息有效。

对于包装的文档/文字消息,该关键字指定请求消息的SOAP主体中的顶部元素的名称。(默认情况下,包装文档/文字消息。

如果对同一web服务中的多个web方法使用相同的SoapAction值,请指定此关键字。否则,一般不需要这个关键字。

与WSDL的关系

SoapRequestMessage关键字影响web服务WSDL<Message>部分。例如,考虑以下web方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Method Add(a as %Numeric,b as %Numeric) As %Numeric [ SoapAction = MyAct,SoapRequestMessage=MyReqMessage, WebMethod ]
{
    Quit a + b
}

对于这个web服务,WSDL包含以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<message name="AddSoapIn">
   <part name="parameters" element="s0:MyReqMessage"/>
</message>
<message name="AddSoapOut">
   <part name="parameters" element="s0:AddResponse"/>
</message>

这些元素在<types>部分中相应地定义。

默认情况下,如果方法没有指定SoapRequestMessage关键字,<message>部分将改为如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<message name="AddSoapIn">
   <part name="parameters" element="s0:Add"/>
</message>
<message name="AddSoapOut">
   <part name="parameters" element="s0:AddResponse"/>
</message>

如果使用SOAP向导从WSDL IRIS web服务或客户端, IRIS将此关键字设置为适合该WSDL的。

对Message的影响

对于前面显示的web方法web服务需要以下形式的请求消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:s='http://www.w3.org/2001/XMLSchema'>
  <SOAP-ENV:Body>
    <MyReqMessage xmlns="http://www.myapp.org"><a>1</a><b>2</b></MyReqMessage>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

相反,如果该方法没有指定SoapRequestMessage关键字,则该消息将如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:s='http://www.w3.org/2001/XMLSchema'>
  <SOAP-ENV:Body>
    <Add xmlns="http://www.myapp.org"><a>1</a><b>2</b></Add>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

第八十二章 方法关键字 - SoapTypeNameSpace

为此web方法使用的类型指定XML命名空间。仅适用于定义为web服务web客户端的类。

用法

若要重写类型的默认XML命名空间(当该方法用作web方法时),请使用以下语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Method name(formal_spec) As returnclass [ SoapTypeNameSpace = "soapnamespace", SoapBindingStyle = document, WebMethod ] 
{    //implementation }

其中soapnamespace是命名空间URI。请注意,如果URI包含冒号(:),则该字符串必须加引号。也就是说,可以使用以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Method MyMethod() [ SoapTypeNameSpace = "http://www.mynamespace.org", SoapBindingStyle = document, WebMethod ] 

或以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Method MyMethod() [ SoapTypeNameSpace = othervalue, SoapBindingStyle = document, WebMethod ] 

但不包括以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Method MyMethod() [ SoapTypeNameSpace = http://www.mynamespace.org, SoapBindingStyle = document, WebMethod ] 

重要提示:对于手动创建的web服务,该关键字的默认值通常是合适的。当使用SOAP向导从WSDL生成web客户端或服务时,InterSystems IRIS会将该关键字设置为适合该WSDL;如果修改该值,web客户端或服务可能不再工作。

详解

此关键字指定此web方法使用的类型的XML命名空间。

注意:只有当方法使用文档样式绑定时,此关键字才有作用。也就是说,方法(或包含它的类)必须用等于documentSoapBindingStyle标记。(对于使用rpc-style绑定的方法,指定这个关键字是没有意义的。)

默认

如果省略此关键字,则此方法的类型位于由web服务客户端类的TYPENAMESPACE参数指定的命名空间中。如果未指定TYPENAMESPACE,则类型将位于由web服务或客户端的are参数指定的命名空间中。

与WSDL的关系

SoapTypeNameSpace关键字影响WSDL的以下部分:

<definitions>元素中的命名空间声明。指定的命名空间(例如,http://www.customtypes.org)将添加到这里。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
xmlns:ns2="http://www.customtypes.org" 
xmlns:s0="http://www.wbns.org" 
xmlns:s1="http://webservicetypesns.org" 
...
targetNamespace="http://www.wbns.org"

在本例中,http://www.customtypes.org命名空间被分配给前缀ns2

请注意,WSDL还像往常一样声明了以下名称空间:

  • Web服务的命名空间(http://www.wsns.org),在本例中,它被分配给前缀s0,也用作Web服务的目标命名空间。
  • 网络服务的类型命名空间http://www.webservicetypesns.org),在本例中它被分配给前缀s1

如果在web服务类中没有指定类型命名空间,则该命名空间不包含在WSDL中。

  • <types>元素,它包含一个<schema>元素,该元素的targetNamespace属性等于为SoapTypeNameSpace指定的命名空间:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<types>
...
<s:schema elementFormDefault="qualified" targetNamespace="http://www.customtypes.org">
    <s:element name="Add">
        <s:complexType>
            <s:sequence>
                <s:element minOccurs="0" name="a" type="s:decimal"/>
                <s:element minOccurs="0" name="b" type="s:decimal"/>
            </s:sequence>
        </s:complexType>
    </s:element>
    <s:element name="AddResponse">
        <s:complexType>
            <s:sequence>
                <s:element name="AddResult" type="s:decimal"/>
            </s:sequence>
        </s:complexType>
    </s:element>
</s:schema>

...
</types>

相反,如果没有指定SoapTypeNameSpace,那么WSDL的这一部分将如下所示。请注意,<schema>元素的targetNamespaceweb服务类型的命名空间:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<types>
...
<s:schema elementFormDefault="qualified" targetNamespace="http://www.webservicetypesns.org">
    <s:element name="Add">
        <s:complexType>
            <s:sequence>
                <s:element minOccurs="0" name="a" type="s:decimal"/>
                <s:element minOccurs="0" name="b" type="s:decimal"/>
            </s:sequence>
        </s:complexType>
    </s:element>
    <s:element name="AddResponse">
        <s:complexType>
            <s:sequence>
                <s:element name="AddResult" type="s:decimal"/>
            </s:sequence>
        </s:complexType>
    </s:element>
</s:schema>

...
</types>

(此外,如果在web服务类中没有指定类型命名空间,则targetNamespace将改为web服务的命名空间。)

对消息的影响

SOAP消息可能如下所示(为了可读性,添加了换行符和空格):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' 
                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
                   xmlns:s='http://www.w3.org/2001/XMLSchema'>
   <SOAP-ENV:Body>
      <AddResponse xmlns="http://www.customtypes.org">
         <AddResult>3</AddResult>
      </AddResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

请注意,<AddResponse>元素位于“http://www.customtypes.org”命名空间中。

相反,如果没有指定SoapTypeNameSpace关键字,则消息可以如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' 
                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
                   xmlns:s='http://www.w3.org/2001/XMLSchema'>
   <SOAP-ENV:Body>
      <AddResponse xmlns="http://www.webservicetypesns.org">
         <AddResult>3</AddResult>
      </AddResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

第八十三章 方法关键字 - SqlName

覆盖投影SQL存储过程的默认名称。 仅当此方法被投影为SQL存储过程时应用。

用法

要覆盖方法投射为SQL存储过程时使用的默认名称,请使用以下语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ClassMethod name(formal_spec) As returnclass [ SqlProc, SqlName = sqlname ] 
{    //implementation }

其中sqlnameSQL标识符。

详解

如果将此方法投影为SQL存储过程,则使用此名称作为存储过程的名称。

默认

如果忽略这个关键字, IRIS确定SQL名称如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CLASSNAME_METHODNAME

默认使用大写字母。 但是,在调用存储过程时可以使用任何情况,因为SQL是不区分大小写的。

因此,在下面的示例中,默认的SQL name值是TEST1_PROC1。 这个默认值是在SELECT语句中指定的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Class User.Test1 Extends %Persistent
{
ClassMethod Proc1(BO,SUM) As %INTEGER [ SqlProc ]
{
   ///definition not shown
}

Query Q1(KD As %String,P1 As %String,P2 As %String) As %SqlQuery
{
  SELECT SUM(SQLUser.TEST1_PROC1(1,2)) AS Sumd
  FROM SQLUser.Test1
}
}

第八十四章 方法关键字 - SqlProc

指定是否可以作为SQL存储过程调用该方法。 只有类方法(而不是实例方法)可以作为SQL存储过程调用。

用法

要指定该方法可以作为SQL存储过程调用,请使用以下语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ClassMethod name(formal_spec) As returnclass [ SqlProc ] 
{    //implementation }

否则,忽略该关键字或将Not放在该关键字之前。

详解

该关键字指定可以作为SQL存储过程调用该方法。 只有类方法(而不是实例方法)可以作为SQL存储过程调用。

存储过程由子类继承。

默认

如果忽略此关键字,则该方法作为SQL存储过程不可用。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
方法关键字SoapBindingStyle,SoapBodyUse,SoapMessageName,SoapNameSpace
指定此方法用作web方法时使用的绑定样式或SOAP调用机制。仅适用于定义为web服务或web客户端的类。
用户7741497
2022/07/07
5900
类关键字SoapBodyUse,SqlCategory,SqlRowIdName,SqlRowIdPrivate
指定此类中定义的任何web method的编码。此关键字仅适用于web服务和web客户端类。
用户7741497
2022/07/06
5520
.NET基础拾遗(7)Web Service的开发与应用基础
  Web Service基于SOAP协议,而SOAP本身符合XML语法规范。虽然.NET为Web Service提供了强大的支持,但了解其基本机制对于程序员来说仍然是必需的。
Edison Zhou
2018/08/20
1.8K0
.NET基础拾遗(7)Web Service的开发与应用基础
查询关键字Private,SoapBindingStyle,SoapBodyUse,SoapNameSpace
私有类成员只能由同一类(或其子类)的其他成员使用。请注意,其他语言通常使用单词Protected来描述这种可见性,使用单词Private来表示从子类不可见。
用户7741497
2022/07/07
4920
方法关键字Requires,ReturnResultsets,ServerOnly,SoapAction
其中,privilegelist 要么是单个特权,要么是用引号括起来的以逗号分隔的特权列表。 每个权限都采用resource:permission的形式,其中permission是Use、Read或Write(或单字母缩写U、R或W)。
用户7741497
2022/07/07
4160
PHP Webservice的发布与调用
发布出来的*.wsdl文件,其实是一个xml格式的文件,生成这个文件可以通过第3方软件,如ZendStudio 就可以生成。
Java架构师必看
2021/03/22
1.4K0
PHP Webservice的发布与调用
Android调用WebService接口详解
我们开发大部分的网络请求都是http来完成的,所以可能有人没有用过WebService,特此写一篇来加深印象并希望可以供大家参考 首先我们需要用到ksoap2的jar包我用的版本是ksoap2-android-assembly-3.5.0-jar-with-dependencies.jar,网上很容易搜到所以我就不贴了,有需要的可以留言。 好了废话不多说了直接上代码
longzeqiu
2019/08/14
1.7K0
php使用NuSoap产生webservice结合WSDL让asp.net调用
类别:PHP 评论:0 浏览:513 发表时间:2009-09-10 16:59:38
Java架构师必看
2021/03/22
3.4K0
php使用NuSoap产生webservice结合WSDL让asp.net调用
JAX-WS – Soap详解[通俗易懂]
http://download.csdn.net/detail/u013379717/7453709
全栈程序员站长
2022/09/14
2.4K0
JAX-WS – Soap详解[通俗易懂]
WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]
元数据实际上是服务终结点的描述,终结点由地址(Address)、绑定(Binding)和契约(Contract)经典的ABC三要素组成。认真阅读过《WCF技术剖析(卷1)》的读者相对会对这三要素的本质有一个深刻的认识:地址决定了服务的位置并实现相应的寻址机制;契约描述了消息交换模式(Message Exchange Pattern: MEP)以及消息的结构(Schema);绑定则通过创建信道栈实现对消息的编码、传输和基于某些特殊的功能(比如实现事务、可靠传输以及基于消息的安全)对消息作出的处理。 服务的消
蒋金楠
2018/01/16
3.2K0
WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]
类关键字PropertyClass,ServerOnly,Sharded,SoapBindingStyle
子类继承这个关键字添加的自定义行为。如果子类为关键字指定了一个值,则该值会指定一个或多个为该类的属性指定参数的附加类。
用户7741497
2022/07/06
4490
springMvc项目集成cxf实现webService通信方式的详细步骤
 添加webService服务接口的bean文件 applicationContext-cxf.xml
跟着飞哥学编程
2022/11/30
1.9K0
springMvc项目集成cxf实现webService通信方式的详细步骤
Java小白翻身 - webservice教程2
来一个HelloWorld,SpringBoot发布WebService可简单啦。
剽悍一小兔
2021/07/20
8440
Java小白翻身 - webservice教程2
常用webservice方法_太极拳初学入门的基本要领
先来考虑一个问题,如果我们要在自己的程序里面展示天气预报,那怎么弄?正确的做法是我们发送一个请求到一个系统,他会给我们返回来天气情况。这个就是一个webservice。天气预报系统就相当于webservice的服务端,我们的系统就相当于客户端。如http://www.webxml.com.cn这个网站上面就列举了多个webservice服务站点
全栈程序员站长
2022/11/08
1.6K0
常用webservice方法_太极拳初学入门的基本要领
java接口调用——webservice就是一个RPC而已
  很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法。就是本地方法调用的升级版而已,我明天会上一篇如何通过socket实现rpc,以及服务的注册和动态上下线。这里先上一篇RPC的实现者一webservice,便于后面理解源码执行过程,框架就是在原理的基础上提供更加便捷的使用而已,协议就是基于TCP或UDP之上,服务者和调用者之间约定消息按照什么样的格式发送以及解析罢了。协议没什么高深莫测的。
intsmaze-刘洋
2018/08/29
2.3K0
java接口调用——webservice就是一个RPC而已
利用spring-ws 现实soap webservice服务
背景:有的系统还用soap协议来做webservice.特别要和他们对接的时候。我们需要实现一套。 今天说说,利用spring-ws来(部署,调用)webservcie,能很好的和主流架构(spring-mvc)结合。 参考资料,官方文档https://docs.spring.io/spring-ws/docs/3.0.0.RELEASE/reference/ spring-ws像spring-mvc一样,在集成到web项目时,前端有个servlet分发请求消息的概念。 这个servlet接受soap
技术蓝海
2018/04/26
6.1K0
利用spring-ws 现实soap webservice服务
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
ASMX 文件是 ASP.NET 中用于创建 Web 服务的文件。Web 服务是用于跨网络传输数据和服务的标准方法,使不同平台和编程语言的系统可以互相通信。通过 ASMX 文件,开发者可以创建基于 SOAP 协议 / HTTP 协议 的 Web 服务,这些服务可以被各种客户端(如浏览器、移动应用程序、其他服务器应用程序)调用。
Damon小智
2024/06/30
8481
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
day45_Webservice学习笔记_01
Web service 即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术即跨平台远程调用技术。
黑泽君
2018/10/11
1.6K0
day45_Webservice学习笔记_01
webservice随记
用户1141560
2017/12/26
2.6K0
WCF技术剖析之二十一:WCF基本异常处理模式[中篇]
通过WCF基本的异常处理模式[上篇], 我们知道了:在默认的情况下,服务端在执行某个服务操作时抛出的异常(在这里指非FaultException异常),其相关的错误信息仅仅限于服务端可见,并不会被WCF传递到客户端;如果将开启了IncludeExceptionDetailInFaults的ServiceDebug服务行为通过声明(通过在服务类型上应用ServiceBehaviorAttrite特性)或者配置的方式应用到相应的服务上,异常相关的所有细节信息将会原封不动地向客户端传送。 这两种方式体现了两种极
蒋金楠
2018/01/16
1.4K0
WCF技术剖析之二十一:WCF基本异常处理模式[中篇]
推荐阅读
相关推荐
方法关键字SoapBindingStyle,SoapBodyUse,SoapMessageName,SoapNameSpace
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验