在下面的WSDL摘录中,在
行<soap1:operation style="document" soapAction="petition"
指定
之间有什么区别VS
<wsdl:service name="ReincarnationPermitService">
<wsdl:port name="ReincarnationRequestPortTypeEndpoint" binding="tns:ReincarnationRequestPortTypeEndpointBinding">
<soap1:address location="http://sheol:666/Services/ReincarnationPermitService.serviceagent/ReincarnationRequestPortTypeEndpoint"/>
</wsdl:port>
</wsdl:service>
<wsdl:portType name="ReincarnationRequestPortType">
<wsdl:operation name="acceptRequest">
<wsdl:input message="tns:ReincarnationParticulars"/>
<wsdl:output message="tns:PetitionResponse"/>
<wsdl:fault name="denied" message="tns:Rejection"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ReincarnationRequestPortTypeEndpointBinding" type="tns:ReincarnationRequestPortType">
<soap1:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="acceptRequest">
<soap1:operation style="document" soapAction="petition" soapActionRequired="true"/>
<wsdl:input>
<soap1:body use="literal" parts="ReincarnationParticulars"/>
</wsdl:input>
<wsdl:output>
<soap1:body use="literal" parts="Approved"/>
</wsdl:output>
<wsdl:fault name="denied">
<soap1:fault use="literal" name="denied"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
答案 0 :(得分:3)
这是我发现的...所以回答我自己的问题。
soapAction属性表示服务提供者的意图,很可能是服务框架的框架。
soapAction帮助服务提供者将soap操作映射到意图解析器。对于任何意图和目的而言,将被调用来为操作提供服务。
soapAction属性是服务提供者框架唯一标识要调用哪个入口点或例程以服务该操作的方法。
因此,soapAction属性可以是任何值,其模式可以由框架决定。在我使用的框架中,对于框架来说,soapAction的值是什么并不重要,其中soapAction属性值只是对处理调用的入口点的引用。
答案 1 :(得分:1)
soapAction="petition"
元素的soap1:operation
属性将包含在HTTP请求消息中,如:
POST /StockQuote HTTP/1.1
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "petition"
SOAPAction HTTP请求头字段可用于指示SOAP HTTP请求的意图。该值是标识intent的URI。 SOAP对URI的格式或特性没有限制,也没有可解析的限制。发出SOAP HTTP请求时,HTTP客户端必须使用此头字段。
SOAPAction头字段的存在和内容可以被防火墙等服务器用于在HTTP中适当地过滤SOAP请求消息。空字符串(“”)的头字段值表示SOAP消息的意图由HTTP Request-URI提供。没有值意味着没有消息意图的指示。
示例:
SOAPAction: "/Services/ReincarnationRequestPortTypeEndpoint/petition"
SOAPAction: "petition"
SOAPAction: ""
SOAPAction:
答案 2 :(得分:0)
当消费者为特定目的使用soapAction属性时,当我们更新WSDL(主要是soapAction字段)时,我们遇到了类似的情况,它打破了消费者代码。
基本上从soap 1.1开始,除了刚用于文档之外没有使用soapAction,它可以是空的。
正如另一个答案中所提到的,它可以描述操作的意图,但是再次出于文档目的。
我们使用它的方式如下;
<soap:operation soapAction="http://company.com.au/hub/services/NotificationApplication/GenerateDocumentNotification?applicationVersion=NotificationApplication_v1.8.9"/>
P.S。 soapAction在soap 1.2中被完全删除了,所以最好不要再依赖这个了!