在 PHP 中使用 MS Dynamics NAV

kop*_*ppa 2 php navision dynamics-nav

我正在启动一个外联网项目,其中 php 页面应该将数据发送到 Microsoft Dynamics NAV。

我以前没有使用过 NAV,但我在这里找到了一些信息。

示例 php 代码对我来说看起来很清楚,但是在开始这个项目之前有什么我应该知道的提示或技巧(基础知识)吗?欢迎所有示例...

Joh*_*ers 5

如何从 PHP 连接 Navision 的 Web 服务

第 1 步:检查您的配置

您需要确保在CustomSettings.config文件中启用了 NTLM :

<add key="ServicesUseNTLMAuthentication" value="true" />
Run Code Online (Sandbox Code Playgroud)

第 2 步:在 OData 和 SOAP 之间进行选择

自 Microsoft Dynamics NAV 2009 起,Microsoft Dynamics NAV 除 SOAP Web 服务外还支持 OData Web 服务。就个人而言,我发现 Odata 协议比 SOAP 协议直观得多。

OData 还具有支持 Json 而不是 XML 用于在服务器和客户端之间进行通信的额外优势,这使得与标准 PHP 数组或对象的转换变得简单。

有关在哪里可以找到现有 Web 服务列表(带有相应的 URL)以及如何注册新服务的更多信息,请参阅官方 MSDN 文档


第 3 步:发送 HTTP 请求:

如果您要使用 SOAP,您可能希望使用 PHP 的SoapClient一些基于它的第三方库来发送和接收 SOAP 消息。

但是,如果您知道如何在 PHP 中解析 XML,您可以只使用 cURL 并自己解析 XML 响应。或者,如果您选择了 Odata 协议,则可以改用 Json 消息。SOAP 只是 XML。

无论如何,如果您使用的是 cURL,那么向您的 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 or Json string)
echo curl_exec($ch);

// Close handle
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

第 3 步:解析您的回复:

解析 SOAP 响应可以像这样简单:

 $data = simplexml_load_string(str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $response));
Run Code Online (Sandbox Code Playgroud)

解析 Json Odata 响应可以像这样简单:

$data = json_decode($response);
Run Code Online (Sandbox Code Playgroud)