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

时间:2018-01-05 05:29:18

标签: php web-services curl soap wsdl

我正在尝试为以下wsdl方法构建一个soap请求=" GetData"

提供商在此提供以下xml请求的是wsdl:WSDL

我已尝试使用以下卷曲调用:curl call

构建以下soap调用:soapcall

请注意,并非所有值都是必需的,我已经在这一周内苦苦挣扎,任何帮助都会非常感激

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="http://firmglobal.com/Confirmit/webservices/8.5/">
      <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>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

因为它需要一个类型为:guid <Id>guid</Id>的值,如wsdl和xml请求中所提到的,是一个由.Net库创建的数据集,并且它用于迭代样本,这是一个非常复杂的请求,因为它需要先前的步骤才能完成,所以我通过省略<token>部分

来完成请求