我正在启动一个外联网项目,其中php页面应该将数据发送到Microsoft Dynamics NAV。
之前我没有使用过NAV,但我找到了一些信息here。
示例php代码对我来说非常清楚,但在开始这个项目之前是否有任何提示或技巧(基础知识)?欢迎所有的例子......
答案 0 :(得分:2)
这里有一些有用的链接:
Dynamics NAV如何使用Web服务与特定于业务的第三方应用程序进行互操作:
答案 1 :(得分:2)
您需要确保在 CustomSettings.config 文件中启用了NTLM:
<add key="ServicesUseNTLMAuthentication" value="true" />
自Microsoft Dynamics NAV 2009起,除了SOAP Web服务之外,Microsoft Dynamics NAV还支持OData Web服务。就个人而言,我发现Odata协议比SOAP协议更直观。
OData还具有支持Json而不是XML的额外优势,可以在服务器和客户端之间进行通信,从而可以轻松地从标准PHP数组或对象进行转换。
有关在何处查找现有Web服务列表(包含相应的URL)以及如何注册新Web服务的详细信息,请参阅the official MSDN documentation。
如果您使用SOAP,您可能希望使用基于它的PHP SoapClient或some 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);
解析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逻辑,这将为我们在未来的修改中节省大量时间。