我想问一下SOAP请求的Body元素到底应该是什么。我认为它应该是一个定义我想要调用的操作名称的元素。我还假设在这个元素中应该有一个与该操作的输入参数相对应的结构。
但是,如果我采用以下WSDL:http://adisrws.mfcr.cz/adistc/axis2/services/rozhraniCRPDPH.rozhraniCRPDPHSOAP并让SoapUI生成getStatusNespolehlivyPlatce操作的请求,请求的内容将是:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:roz="http://adis.mfcr.cz/rozhraniCRPDPH/">
<soapenv:Header/>
<soapenv:Body>
<roz:StatusNespolehlivyPlatceRequest>
<roz:dic>00247618</roz:dic>
</roz:StatusNespolehlivyPlatceRequest>
</soapenv:Body>
</soapenv:Envelope>
在<soapenv:Body>
中没有操作的名称(getStatusNespolehlivyPlatce),而是getStatusNespolehlivyPlatce操作的相应输入参数的名称。 SOAP服务器如何发现我正在调用getStatusNespolehlivyPlatce操作?
服务器是否使用HTTP SOAPAction
标头来确定此问题? (在这种情况下是:SOAPAction:“http://adis.mfcr.cz/rozhraniCRPDPH/getStatusNespolehlivyPlatce”)
服务器是否仅从底层WSDL和SOAP请求推断操作(即不查看HTTP头)?
如果我(从服务器提供商的角度来看)决定不使用SOAPAction
HTTP标头,那么根据W3C标准,SOAP请求应该如何?
SOAPAction
标头的使用是否是强制性的,并且它只是简化防火墙工作的信息,因此他们不必解析有关操作的信息从XML请求中请求?
感谢您的时间。
答案 0 :(得分:1)
如果我举例说明Axis2 Framework,它使用以下步骤来识别服务操作。详情请见以下网址