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>
部分来执行请求