使用PHP WSDL进行SOAP身份验证

时间:2015-02-17 14:00:28

标签: php authentication soap wsdl

我查看了几个相关主题,但没有解决我的wsdl / soap / php问题。

我的标题看起来像这样;

<?xml version="1.0" encoding="ISO-8859-1"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="http://"> 
    <SOAP-ENV:Header> 
        <ns:authentication> 
            <username>username</username> 
            <password>password</password> 
        </ns:authentication> 
    </SOAP-ENV:Header> 
</SOAP-ENV:Envelope> 

我无法成功连接。我已经尝试过示例代码,但没有一个能够运行。

感谢任何帮助。

其他身份验证信息:

<xsd:complexType>
           <xsd:all>
              <xsd:element name="username" nillable="false" minOccurs="1" maxOccurs="1">
                 <xsd:annotation>
                    <xsd:documentation>Username for authenticatie</xsd:documentation>
                 </xsd:annotation>
                 <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                       <xsd:maxLength value="4000"/>
                    </xsd:restriction>
                 </xsd:simpleType>
              </xsd:element>
              <xsd:element name="password" nillable="false" minOccurs="1" maxOccurs="1">
                 <xsd:annotation>
                    <xsd:documentation>Password for authentication</xsd:documentation>
                 </xsd:annotation>
                 <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                       <xsd:maxLength value="4000"/>
                    </xsd:restriction>
                 </xsd:simpleType>
              </xsd:element>
           </xsd:all>
        </xsd:complexType>

完整的工作请求如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:zone="http://">
   <soapenv:Header>
       <zone:authentication>
          <!--You may enter the following 2 items in any order-->
          <username>myusername</username>
          <password>mypassword</password>
       </zone:authentication>
   </soapenv:Header>
   <soapenv:Body>
       <zone:searchSubscriptionRequest>
          <!--You may enter the following 2 items in any order-->
          <requestTag>test</requestTag>
          <zipcode>000 AB</zipcode>
       </zone:searchSubscriptionRequest>
  </soapenv:Body>

1 个答案:

答案 0 :(得分:1)

它不使用标准<SOAP-ENV:Header>身份验证,而是用户名和密码是<SOAP-ENV:Body>中的常规变量。

该代码段已脱离上下文,因此我无法告诉您如何设置它们,但您可以使用一些WSDL到PHP代码生成器来获取PHP类以供您发现。