php SOAP 请求使用特定方法给出内部服务器错误



im 尝试为以下 wsdl 方法构建 soap 请求 = "GetData">

请注意,并非所有值都是必需的,我已经为此苦苦挣扎了一个星期,任何帮助将不胜感激

Host: xxxxxxxxxxxxxxxx
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "xxxxxxxxxxx"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetData xmlns="xxxxxx">
      <key>string</key>
      <transferDef>
        <Where />
        <OrderBy>
          <OrderByItems>
            <BinaryArithmetic xsi:nil="true" />
            <Categorization xsi:nil="true" />
            <Function xsi:nil="true" />
            <QueryField xsi:nil="true" />
            <QueryForm xsi:nil="true" />
          </OrderByItems>
        </OrderBy>
        <ProjectId>string</ProjectId>
        <DbType>Production or Test</DbType>
      </transferDef>
      <token>
        <Id>guid</Id>
        <LastResponseIdReturned>long</LastResponseIdReturned>
        <FirstResponseIdReturned>long</FirstResponseIdReturned>
        <NumberOfResponsesReturned>long</NumberOfResponsesReturned>
        <DatasetsReturned>long</DatasetsReturned>
        <LastDataSet>boolean</LastDataSet>
        <ProjectId>string</ProjectId>
        <ChangeTrackingVersion>long</ChangeTrackingVersion>
      </token>
    </GetData>
  </soap:Body>
</soap:Envelope>

如今,在PHP中使用SOAP WS的最佳方法是使用WSDL到PHP,例如PackageGenerator项目,它将生成类来构造请求,然后发送请求,然后使用PHP对象处理响应。生成的类足够直观,可以构造请求。此外,它使用作曲家作为自动加载器。

解决了这个问题,问题出在<token></token>部分。

由于它需要一个 type:guid 的值,<Id>guid</Id>如 wsdl 和 xml 请求中所述,是由 .Net 库创建的数据集,并且用于迭代示例,因此这是一个相当复杂的请求,因为它需要完成前面的步骤,所以我通过省略<token>部分来执行请求

最新更新