我正在尝试编写一个使用Dynamics NAV Odata Feed的node.js脚本。
我的动态资产净值设置中有UserAccount / PW和Web服务访问密钥。
我无法通过在标题中添加内容或在URL查询中添加内容来查找如何正确进行身份验证。我尝试过使用'username:password @ server'格式。我已经尝试将其编码为base64,并在Header中添加“Authentication”值。
documentation itself非常不具体。我知道如何生成密钥,但我不知道如何正确地将该密钥发送给NAV进行身份验证。
我正在使用'request-promise'npm包,它接受一个'options'参数,我可以添加任意头键:值对。请有人给我一些关于如何验证资产净值的方向。我已经在这几个小时了。
答案 0 :(得分:3)
我找到了一个满意的答案。
使用node-libcurl我能够使用格式
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};
具体来说,我的cURL模块如下所示:
?format=json
但我必须在网址中明确要求json,例如FROM ubuntu:16.04
MAINTAINER S.K.
RUN apt-get update
RUN apt-get install curl -y
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash \
&& export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" \
&& nvm install 6.9.1 \
&& npm i express -g \
&& npm i nunjucks -g \
&& npm i nodemon -g \
&& npm i gulp -g \
RUN mkdir -p ./PROJECT
EXPOSE 1520
。
答案 1 :(得分:-1)
Tkol,你是对的,你也可以使用guzzle,这非常简单,它是一个查询客户表的示例函数:
public function ReadCustomer($identifier=0)
{
try {
$client = new GuzzleHttpClient();
$apiRequest = $client->request('GET', 'http://server:port/ServiceName/WS/CompanyName/Page/Customer?$filter=No eq \''.$identifier.'\'',[
'auth' =>'username','password', 'NTLM' ], //NTLM authentication required
'debug' => true //If needed to debug
]);
$content = json_decode($apiRequest->getBody()->getContents());
return $content;
} catch (RequestException $re) {
//For handling exception
}
}
你可以查看我的样本: update/delete/get from Dynamics NAV OData webservice