Не получаю ответа с помощью вызова http GET в prortactor

#javascript #node.js #automation #protractor

Вопрос:

Я вызываю API GET в своем пакете автоматизации, но не получаю ответа. Тот же API работает с почтальоном. У меня полно консоли.журнал, который не печатается. Ошибок тоже нет. Ниже приведен фрагмент кода.

   var deferred = protractor.promise.defer();  var options = {  method: "GET",  hostname: hostname,  port: 8080,  path: '/v1/fis/' fiId '/businessCustomers/' userAuthId '/approvals',  headers: {  'authorization': 'testclient',  'content-type': 'application/json',  'accept': 'application/json',  }  };    var req = http.request(options, function (response) {  browser.sleep(1000);  console.log('headers are:', options);  console.log('hostname is: ', hostname);  browser.sleep(1000);  console.log('STATUS for approval API : '   res.statusCode);  var chunks = [];   response.on("data", function (chunk) {  console.log('in chunk block::');  chunks.push(chunk);  });   response.on("end", function () {  var body = Buffer.concat(chunks);  var finaljson = JSON.parse(body.toString());  console.log('finaljson is:****', finaljson);  successCallBack(finaljson.SuccessResponse);  });  });   req.end();  return deferred.promise;   };```   Any insights will be helpful. TIA!  

Ответ №1:

Попробуйте вместо этого что-нибудь подобное. Должно работать лучше. Я пропустил вашу консоль.регистрируйте сообщения для простоты, но вы можете легко добавлять их там, где вам нужно.

 function myFunction() {  return new Promise(resolve, reject) {  const options = {  method: "GET",  hostname: hostname,  port: 8080,  path: '/v1/fis/' fiId '/businessCustomers/' userAuthId '/approvals',  headers: {  'authorization': 'testclient',  'content-type': 'application/json',  'accept': 'application/json',  }  };   http.get(options, (res) =gt; {  let rawData = '';  res.on('data', (chunk) =gt; { rawData  = chunk; });  res.on('end', () =gt; {  try {  const finaljson = JSON.parse(rawData);  resolve(finaljson.SuccessResponse);  } catch (e) {  reject(e.message);  }  });   }).on('error', (e) =gt; {  reject(e);  });  } }  

И тогда вы бы просто назвали это использованием myFunction().then((successResponse) =gt; { // do stuff })