将MS Dynamics NAV与PHP结合使用


Using MS Dynamics NAV with PHP

我正在启动一个extranet项目,其中php页面应该向Microsoft Dynamics NAV发送数据。

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

示例php代码对我来说非常清楚,但在开始这个项目之前,有什么技巧或窍门(基础知识)我应该知道吗?欢迎所有示例…

如何从PHP连接Navision的web服务

步骤1:检查您的配置

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

<add key="ServicesUseNTLMAuthentication" value="true" />

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

自2009年Microsoft Dynamics NAV以来,除了SOAP web服务外,Microsoft Dynamics NAV还支持OData web服务。就我个人而言,我发现Odata协议比SOAP协议更直观。

OData还有一个额外的优势,即支持Json而不是XML在服务器和客户端之间进行通信,这使得从标准PHP数组或对象到标准PHP阵列或对象的转换非常容易。

请参阅MSDN官方文档,了解有关在何处查找现有web服务列表(以及相应的URL)以及如何注册新服务的更多信息。


步骤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);

步骤3:分析您的响应:

解析SOAP响应可以如此简单:

 $data = simplexml_load_string(str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $response));

解析Json Odata响应可以如此简单:

$data = json_decode($response);

这里有一些有用的链接:

Dynamics NAV如何使用Web服务与特定于业务的第三方应用程序进行互操作:

  1. Microsoft Dynamics NAV Web服务:MSDN
  2. 与Navision:向Navision:MMSDN公开.NET组件

Microsoft Dynamics NAV(Navision)社区:

  1. http://community.dynamics.com/product/nav/f/34.aspx
  2. http://www.mibuso.com/

我认为有一个"技巧和技巧"。当你必须将数据直接传递到Navision表,而这种集成将为不熟悉Nav的程序员带来好处时,制作一种集成表是很好的。

集成表中的结构和原始表中的相同,但集成表对字段没有任何限制。作为一名c#程序员,我认为它有点像DTO。

积分表的优点是什么?

正如您在Navision中所知道的,有许多限制和字段依赖关系。重要的是你首先填写哪个字段,在哪个字段上你应该使用VALIDATE等

在我看来,这对于一个c#,php,通常是非动力学程序员来说是非常舒服的,他们可以在没有任何问题的情况下传递数据,并且他们不必考虑这个Nav限制。他们可以完成自己的工作,将数据传递给Dynamics,在Dynamics中,我们可以决定如何处理这些数据。

该解决方案还为我们提供了分离的"集成"和Dynamics Nav逻辑,这将为我们在未来的修改中节省大量时间。