Php 如何在WSDL中要求身份验证Soap头?

Php 如何在WSDL中要求身份验证Soap头?,php,soap,wsdl,Php,Soap,Wsdl,我使用SOAPServer在php中创建了一个web服务。它希望看到带有用户名和密码元素的SoapHeaderUsernameToken。当我在请求中包含这个标题时,一切都正常工作。只需在Soap处理程序类中定义一个名为“UsernameToken”的方法,即可调用此方法并将stdClass Obj传递给它。然后,我可以通过$Obj->username和$Obj->password验证用户 我不知道向WSDL文件添加什么,首先定义这个UsernameToken头,然后在WSDL中指出它是必需的

我使用
SOAPServer
在php中创建了一个web服务。它希望看到带有用户名和密码元素的
SoapHeader
UsernameToken
。当我在请求中包含这个标题时,一切都正常工作。只需在Soap处理程序类中定义一个名为“UsernameToken”的方法,即可调用此方法并将stdClass Obj传递给它。然后,我可以通过
$Obj->username
$Obj->password
验证用户

我不知道向WSDL文件添加什么,首先定义这个
UsernameToken
头,然后在WSDL中指出它是必需的

我在某个地方读到过,新的SOAP标准不赞成“必需”头的概念


关于如何至少指明请求应包含此标头的wsdl的任何建议?

以下是指定登录名的wsdl示例:


您是否查看了。我也找不到任何需要去润滑的东西。

答案很长。见下文


在客户端中,您可以使用mustUnderstand属性来指示收件人处理的头条目是必需的还是可选的。如果服务器不能或不想处理一个强制的头,它必须向客户端抛出一个SOAP错误。

您是否可以添加一个链接,指向您读到的新SOAP标准不赞成“必需”头的概念的地方?您是否可以显示您当前的WSDL?您的回答实际上没有回答以下问题:“如何在WSDL中指出它是必需的?”即使它毕竟是一个起点。
<binding name="Webservices.nlBinding" type="tns:Webservices.nlPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="login">
<soap:operation soapAction="https://ws1.webservices.nl/soap_doclit.php/login" style="document"/>
<input>
<soap:body use="literal"/>
<soap:header message="tns:Headers" part="HeaderLogin" use="literal"/>
<soap:header message="tns:Headers" part="HeaderAuthenticate" use="literal"/>
</input>