我正在尝试从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机器上都试过这个。我是否必须在资产净值中执行任何其他配置?是否有任何特殊技巧可以让它发挥作用?
答案 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授权类型,因此您可以通过协商过程在其日志中查看所有请求和响应。