не получая тело ответа от модуля https для node.js, если в заголовках ответа используется Transfer-encoding = chunked - PullRequest
0 голосов
/ 05 июля 2019

Я использую библиотеку 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 имеет свое кодирование передачи в виде чанков.

...