我尝试从tfs api url获取所有项目名称。为此,我使用node.js ntlm包。以下是我的代码。
function getTFSProjectNames(credentials) {
return new Promise(function (resolve, reject) {
var ntlm = require('ntlm');
var ntlmrequest = require('request').defaults({
agentClass: require('agentkeepalive').HttpsAgent
});
var projectNames = [];
var url = "https://{instance}/tfs/DefaultCollection/_apis/projects?api-version=1.0"
, domain = 'domain'
, hostname = 'hostname';
var testOption = {
url:url,
headers: {
'Authorization': ntlm.challengeHeader(hostname, domain)
},
proxy: 'server proxy',
timeout: 10000,
followRedirect: true,
maxRedirects: 10
}
ntlmrequest(testOption , function (err, ntlmres) {
if (err && ntlmres == undefined)
resolve({ 'Projects': projectNames });
else {
var options = {
method: 'get',
json: true,
url: url,
headers: {
'Authorization': ntlm.responseHeader(ntlmres, url, domain, credentials.username, credentials.password),
'Content-Type': 'application/json'
},
proxy: 'server proxy',
timeout: 10000,
followRedirect: true,
maxRedirects: 10
}
ntlmrequest(options, function (err, ntlmres, body) {
if (err)
return next(err)
if (ntlmres != undefined && ntlmres.body != undefined && ntlmres.body.value != undefined) {
var projectNames = ntlmres.body.value.map(function (item) {
return item.name;
})
}
resolve({ 'Projects': projectNames });
});
}
});
});
}
即使是正确的凭据,它的响应始终为 401 - 未经授权:由于凭据无效而拒绝访问。这是一个服务器错误。我无法理解,为什么每次都会发生这种情况。请帮我解决这个问题。