spring - Spring Boot REST - 使用 OData 从 Microsoft Dynamics NAV 中提取数据
问题描述
我需要从基于 OData 的 Microsoft Dynamics NAV 中提取数据。我尝试了 NTLM Auth 方法,但我的新方法总是收到“401”或“NEGOTIATE 身份验证错误:提供的名称无效(机制级别:KrbException:无法找到默认领域)”。
我有一个运行 NAV 实例的虚拟机。在我的本地机器上,我的开发环境运行需要提取数据的应用程序。两者不在同一个Windows域中。
到目前为止,这是我的代码(原型设计):
PoolingHttpClientConnectionManager connPool = new PoolingHttpClientConnectionManager();
connPool.setMaxTotal(200);
connPool.setDefaultMaxPerRoute(200);
RequestConfig config = RequestConfig.custom().setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM)).build();
BasicCredentialsProvider b = new BasicCredentialsProvider();
b.setCredentials(org.apache.http.auth.AuthScope.ANY, new NTCredentials("user", "pw", "hostname", "domain"));
HttpClient client = HttpClientBuilder.create().setConnectionManager(connPool).setDefaultCredentialsProvider(b).setDefaultRequestConfig(config).build();
HttpClientContext context = HttpClientContext.create();
context.setCredentialsProvider(b);
String bodyAsString = "";
HttpGet get = new HttpGet("http://VM10-2018:7048/GLT/OData/Company('GLT')/Bestand3");
try {
HttpResponse response = client.execute(get);
if (response != null) {
String s = response.toString();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
是否可以使用我可以为每个用户生成的用户名和网络服务访问密钥访问数据?用户拥有完全权限。
感谢您的帮助。
解决方案
推荐阅读
- c# - Skype4com.dll 不适用于最新更新
- java - 在多维数组中查找坐标
- powershell - 捕获未处理的异常
- javascript - 是否有可能获得“已解决”类型的承诺?
- jquery - 如何修复包括 autoNumeric 到 laravel / Blade / jQuery / Bootstrap 项目的错误?
- apache-spark - 使用窗口在 pyspark 中的数据框的多列上应用聚合
- python - 将缺失值保持为“NaN”的 LabelEncoder
- ios - 如何快速循环遍历表格视图中的多个部分
- android - 处理程序发布执行队列的顺序不正确
- javascript - 原型函数中“每个”方法的问题