使用MS Dynamics NAV和PHP

时间:2012-01-16 20:43:56

标签: php nav navision dynamics-nav

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

之前我没有使用过NAV,但我找到了一些信息here

示例php代码对我来说非常清楚,但在开始这个项目之前是否有任何提示或技巧(基础知识)?欢迎所有的例子......

3 个答案:

答案 0 :(得分:2)

这里有一些有用的链接:

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

  1. Microsoft Dynamics NAV Web服务:MSDN
  2. 与Navision交谈:将.NET组件暴露给Navision:MSDN
  3. Microsoft Dynamics NAV(Navision)社区:

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

答案 1 :(得分:2)

如何从PHP

连接Navision的Web服务

第1步:检查配置

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

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

第2步:在OData和SOAP

之间进行选择

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

OData还具有支持Json而不是XML的额外优势,可以在服务器和客户端之间进行通信,从而可以轻松地从标准PHP数组或对象进行转换。

有关在何处查找现有Web服务列表(包含相应的URL)以及如何注册新Web服务的详细信息,请参阅the official MSDN documentation

第3步:发送HTTP请求:

如果您使用SOAP,您可能希望使用基于它的PHP SoapClientsome third party library来发送和接收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);

答案 2 :(得分:0)

我认为有一个“技巧和提示”。当你必须将数据直接传递给Navision表时,这种集成将会对那些不为人知的程序员进行导航。最好制作一种集成表。

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

集成表的优点是什么?

您可以在Navision中了解许多限制和字段依赖性。首先填写哪个字段,在哪个字段上使用VALIDATE等非常重要。

在我看来,这对c#,php来说非常舒服,通常非动态程序员可以传递数据做Dynamics Nav没有任何问题,他们不必考虑这个Nav限制。他们可以完成工作,将数据传递给Dynamics,在Dynamics中我们可以决定如何处理这些数据。

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