Я использую библиотеку https для получения ответа на запрос https, проблема в том, что когда https.get
обрабатывает URL-адрес, он дает правильные заголовки ответа и код состояния в ответе через функцию обратного вызова, но тело ответа равно undefined
(который я получаю, когда использую этот URL-адрес с помощью какого-либо инструмента, такого как почтальон).
Это моя функция обратного вызова:
onRequestComplete( received ) {
try {
logger.log( 'Message received from endpoint' );
logger.log( 'statusCode: ' + received.statusCode );
logger.log( 'headers: ' + JSON.stringify( received.headers ) );
let data = "";
logger.log('will now log data: ');
received.on('data', function (d) {
logger.log('logging data: ');
logger.log(d);
data += d;
});
let this_ = this;
received.on( 'end', function() {
let response: string = data.toString();
let endpoint = this_.getEndPoint(this_.requestMessage.DESTINATION_NETWORK_ID);
this_.requestMessage.SOURCE_CHANNEL_ID = String(endpoint.CHANNEL_ID);
this_.requestMessage.SOURCE_NETWORK_ID = endpoint.NETWORK_ID;
this_.callbackFunction( this_.reference, received.headers, received.statusCode, response, this_.requestMessage )
} );
}
catch ( err ) {
logger.logError( err.message );
}
}
потребляется через:
if ( this.requestMessage.httpmethod === "GET" || this.requestMessage.httpmethod === "DELETE" ) {
request = https.get( options, this.onRequestComplete.bind( this ) ).on('error', (e) => {
logger.logError('error occurred')
logger.logError(e);
}); }
Когда я вхожу в мою функцию обратного вызова, я вижу, что on
событие данных (received.on( 'data', function(d) {..})
не вызывается. В чем может быть причина? Этот код работает для других вызовов, единственное отличие состоит в том, что обрабатываемый URL имеет свое кодирование передачи в виде чанков.