TKo*_*KoL 5 web-services node.js dynamics-nav
我正在尝试编写一个使用Dynamics NAV Odata提要的node.js脚本。
我的Dynamics NAV设置中同时有一个UserAccount / PW和一个Web服务访问密钥。
我一辈子都找不到如何正确验证身份的方法,无论是在标头中添加内容还是在URL查询中添加内容。我尝试使用'username:password @ server'格式。我尝试将其编码为base64并将其添加到“身份验证”值的标题中。
该文档本身是非常特定的。我知道如何生成密钥,但是我不知道如何正确地将该密钥发送给NAV进行身份验证。
我正在使用'request-promise'npm软件包,该软件包带有一个'options'参数,可以在其中添加任意的标头key:value对。请有人给我一些有关如何向NAV进行身份验证的指示。我已经花了几个小时了。
我找到了满意的答案。
使用node-libcurl我能够使用以下格式cURL到一个url
http://username:password@<server>/ODATA_table
具体来说,我的 cURL 模块如下所示:
var Curl = require('node-libcurl').Curl;
var curl = new Curl(),
close = curl.close.bind(curl);
function getOData(url) {
return new Promise((resolve, reject) => {
curl.setOpt(Curl.option.URL, url);
curl.setOpt(Curl.option.HTTPAUTH, Curl.auth.NTLM);
curl.setOpt(Curl.option.SSL_VERIFYPEER, false);
curl.setOpt(Curl.option.SSL_VERIFYHOST, false);
curl.setOpt(Curl.option.POST, 0);
curl.on('end', function (statusCode, body, headers) {
var retObj = JSON.parse(body);
resolve(retObj);
close();
});
curl.on( 'error', function(e){
reject(e);
close();
});
curl.perform();
})
}
module.exports = {getOData: getOData};
Run Code Online (Sandbox Code Playgroud)
但我必须在 url 中明确请求 json,例如?format=json
.
归档时间: |
|
查看次数: |
709 次 |
最近记录: |