0
我需要連接到一個自定義XML服務,它具有以下要求:的NodeJS:如何使同一個連接上連續的http請求
第一個HTTP請求到服務必須到登錄端點進行,與標題字段「名稱」包含我們想要連接的用戶。作爲響應,我們得到一個「摘要」標題字段,其中包含一個挑戰,我們必須使用這個挑戰來計算要用以下請求發送的值。
以下請求必須在同一連接上進行,並根據響應發送包含先前計算值的「摘要」標題。
如果我們沒有這樣做,服務器將以錯誤結束連接。
我試過使用keepAlive = true和maxSockets = 1的http代理,但是我無法從第二個請求獲取響應。 (如果我禁用代理我得到的迴應,但因爲它是從不同的方面所作的請求從服務器端
感謝所有幫助...這裏是我的代碼:
var http = require('http');
const keepAliveAgent = new http.Agent({ keepAlive: true, maxSockets: 1 });
var docxml = "<?xml version='1.0' encoding='windows-1252'?><document><docitems></docitems></document>";
var loginHash = function(user, password, digest) {
result= digest+password+user;
return result.toString();
}
var loginOptions = {
host: '10.190.22.1',
port: 2261,
path: '/Login',
agent: keepAliveAgent,
headers: {
'name': 'JOSE'
}
};
req1 = http.get(loginOptions, function(res1) {
procDigest = loginHash('JOSE', 'ROCHA', req1.res.headers.digest);
console.log('Digested: ' + procDigest);
var insertOptions = {
host: '10.190.22.1',
port: 2261,
path: '/PostSomething',
method: 'POST',
agent: keepAliveAgent,
headers: {
'Digest': procDigest
}
};
var req2 = http.request(insertOptions, function (res2) {
console.log('Request2 Headers: ' + JSON.stringify(req2.res.statusCode));
});
req2.on('end', function(){
console.log('Request2 Headers: ' + req2.res);
});
req2.on('error', function(e) {
console.log('Error: ' + e);
});
req2.write(docxml);
req2.end();
});
您是否嘗試添加'res1.resume()'以排除來自第一個請求的響應? – mscdex
謝謝@mscdex,確實解決了我的問題。 – user3450162