Как получить ответ / текст в тексте с помощью node-libcurl?
Я использую node-libcurl
для связи с моим API, который должен возвращать простой ответ JSON. Я использую следующий код:
// cURL instance
const curl = new Curl();
const close = curl.close.bind(curl);
// cURL Options
curl.setOpt(Curl.option.URL, 'http://locally-hosted/consume.endpoint');
curl.setOpt(Curl.option.CONNECTTIMEOUT, 60);
curl.setOpt(Curl.option.FOLLOWLOCATION, true);
curl.setOpt(Curl.option.VERBOSE, true);
// Custom headers for this request
curl.setOpt(Curl.option.HTTPHEADER, [
'Some: Value'
]);
// POST payload
curl.setOpt(Curl.option.POSTFIELDS, querystring.stringify({
id: 1,
value: 'foobar'
}));
// cURL cookie settings
const cookieJarFile = path.join(__dirname, 'cookiejar.txt');
curl.setOpt(Curl.option.COOKIEFILE, cookieJarFile);
curl.setOpt(Curl.option.COOKIEJAR, cookieJarFile);
// Cookie jar file check
if (!fs.existsSync(cookieJarFile)) {
fs.writeFileSync(cookieJarFile);
}
// Event listener for data
curl.on('data', (chunk, curlInstance) => {
console.log('Receiving data with size: ', chunk.length);
console.log(chunk.toString());
});
// Event listener for end
curl.on('end', (statusCode, body, headers, curlInstance) => {
console.info('Status Code: ', statusCode);
console.info('Headers: ', headers);
console.info('Body length: ', body.length);
console.info('Body: ', body);
curl.close();
});
// Error handler for cURL
curl.on('error', (error, errorCode) => {
console.error('Error: ', error);
console.error('Code: ', errorCode);
curl.close();
});
// Commits this request to the URL
curl.perform();
Я получаю ответ в data
прослушиватель событий или когда end
прослушиватель событий завершен. Проблема, с которой я столкнулся, заключается в том, что я получаю ответ в этом представлении:
Body: �w[��x��%Yl��(|�q-�.
M$�kネ���A@\��eǽ�>B�E��
m�
-�
То есть я получил двоичный ответ, но не смог преобразовать его во что-нибудь разумное. Применение.toString()
не помогло, и, если проверить data
слушатель событий, я сказал там: chunk.toString()
, который вернул мне то же самое.
Как получить текстовый ответ с помощью cURL для Node.js?
0 ответов
Полученные данные передаются как буфер в конечное событие, добавьте это в свой код.
curl.enable(CurlFeature.NoDataParsing);
Для получения дополнительной информации, пожалуйста, проверьте документы