0

目前我正在为 Java 中的 Microsoft Dynamics Nav 实现一个连接器。

为此,我想通过 NTLM 创建与 Dynamics Nav 服务器的连接。我发现的大多数关于此的博客和文档都已过时。

从 Java 连接到 NAV Web 服务

如果有人能建议我一种使用org.apache.http.client.HttpClient. (如果有任何可用于 Dynamics Nav 的 Java 客户端库,请建议我)

此外,如果有人能向我推荐一个可以让我获得免费的 Dynamics Nav 测试环境来测试我的 Dynamics Nav 连接器应用程序的地方,我将不胜感激。

4

1 回答 1

1

Windows Challenge/Response ( NTLM) 是在包括运行 Windows 操作系统的系统和独立系统上的网络上使用的身份验证协议。我能够NTLM使用org.apache.http.client.HttpClientversion处理身份验证4.4

这是我使用的 Maven 依赖项(方法和方法名称在其他版本中可能略有不同)。

<dependency>
 <groupId>org.apache.httpcomponents</groupId>
 <artifactId>httpclient</artifactId>
 <version>4.4</version>
</dependency>

实施需要以下导入。这是非 SSL 连接的基本要求。

import org.apache.http.auth.AuthScope;
import org.apache.http.auth.NTCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;

这是实现。需要用真实凭据替换UsernamePassword和。Domain

CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
HttpClient httpClient = HttpClientBuilder.create()
                .setDefaultCredentialsProvider(credentialsProvider)
                .build();

credentialsProvider.setCredentials(AuthScope.ANY, new NTCredentials("Username", "Password", null, "Domain"));

现在,此 http 客户端可用于与 Dynamics NAV API 进行通信。

但是我在我所在的地区(亚洲)找不到 Microsoft Dynamics NAV 的免费测试环境。但很少有云服务提供商为其他地区提供免费测试试用。

作为 Linux 用户,我必须在虚拟环境中安装 Windows 并在其上安装 Dynamics NAV 以创建测试环境。如果您熟悉 Docker,则可以从此链接下载 Dynamics NAV Docker 映像。

于 2017-12-04T16:15:39.007 回答