如何通过 PHP 连接 Navision 的 Web 服务
第 1 步:检查您的配置
正如gbierkens 已经指出的那样,您需要确保在 CustomSettings.config 文件中启用了 NTLM:
<add key="ServicesUseNTLMAuthentication" value="true" />
第 2 步:发送 HTTP 请求:
就我个人而言,我不太喜欢仅仅使用 SoapClient 或库来发送您的 HTTP 请求并处理您的响应。如果您知道如何在 PHP 中解析 XML,则可以使用 cURL 并自己解析 XML 响应。
在这种情况下,向您的 SOAP 或 Odata 服务发送 GET 请求真的可以像这样简单:
// Create curl handle
$ch = curl_init();
// Set HTTP options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'username:password');
// Get & output response (= XML string)
echo curl_exec($ch);
// Close handle
curl_close($ch);
第 3 步:解析您的响应:
解析 SOAP 响应可以这么简单:
$xml = simplexml_load_string(str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $response));
注意:
如果您不喜欢阅读和编写原始 SOAP 消息,您可以改用 Navision's Odata services。
我发现 Odata 协议不仅比 SOAP 协议更直观,它还具有支持 Json 而不是 XML 在服务器和客户端之间进行通信的额外优势,这使得标准 PHP 数组或对象之间的转换变得容易作为馅饼。