使用Java访问动态NAV Web服务

时间:2014-02-21 16:55:14

标签: java microsoft-dynamics dynamics-nav dynamics-nav-2013

我正在尝试从Java访问Dynamics NAV 2013 R2 Web服务。 Web服务正在运行,当我在Internet Explorer中输入URL时,我可以看到WSDL,但首先提示我输入用户名和密码。在Wireshark上,我可以看到它使用基于NTLM的身份验证。 Sofar我只能从Internet Explorer打开WSDL,当我在Firefox上打开它时,它给我一个空白页面,没有错误。

我想要做的是使用wsimport工具从Java访问Web服务,但我无法进行身份验证。我已在~/.metro/auth中创建了一个文件夹,并将以下行放在其中:

http://userfoobar:passforbar@192.168.0.170:7047//DynamicsNAV71/WS/CRONUS%20AG/Page/PageWithCapitalization

我试图访问网页:

wsimport -d generated -s sources http://@192.168.0.170:7047/DynamicsNAV71/WS/CRONUS%20AG/Page/PageWithCapitalization

我总是得到错误:

[ERROR] Server returned HTTP response code: 401 for URL: http://@192.168.0.170:7047/DynamicsNAV71/WS/CRONUS%20AG/Page/PageWithCapitalization,  "http://@192.168.0.170:7047/DynamicsNAV71/WS/CRONUS%20AG/Page/PageWithCapitalization" needs authorization, please provide authorization file with read access at /home/user/.metro/auth or use -Xauthfile to give the authorization file and on each line provide authorization information using this format : http[s]://user:password@host:port//<url-path>

我在Linux和运行NAV Webservice的Windows 7机器上都试过这个。我是否必须在资产净值中执行任何其他配置?是否有任何特殊技巧可以让它发挥作用?

1 个答案:

答案 0 :(得分:3)

默认情况下,Nav使用Windows Active Directory授权。我不确定wsimport在java中做了什么,但url中提供的凭据不太可行。您需要通过协商过程来使用服务器进行授权,或者在服务器(或配置文件)中的Nav Server Administration管理单元中更改授权类型。

请参阅here有关凭据类型的信息,here是如何配置服务器的。另请参阅弗雷迪博客how to connect to Nav from Java上的有用帖子(我相信它仍然与Nav 2009相关)。

soapUI可以处理NTLM授权类型,因此您可以通过协商过程在其日志中查看所有请求和响应。

相关问题