English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Solução para Problema de Caracteres Mal Formados ao Usar Requisições HTTP no Nodejs

Hoje, ao fazer uma solicitação HTTP com nodejs, os dados retornados são um arquivo html, e ainda assim usei o método de análise de dados json que uso antes. Como esperado, ocorreu um erro: SyntaxError: token inesperado em JSON na posição 0

Não há outra escolha, a não ser trocar um método, transformar o objeto Buffer recebido em toString, e ao imprimir descobriu-se que é um código ilegível.

A primeira impressão é de que é um problema de codificação, pesquisei no google e vi a documentação oficial, e resumo três métodos:

1、toString com a codificação como parâmetro.

2、usar iconv-alterar a codificação lite.

3、usar cheerio para carregar html.

Mas nenhum dos três métodos mencionados acima era o meu erro. Depois de ver que alguém no cnode tinha um problema semelhante, embora não completamente idêntico, alguém mencionou usar compressão gzip, e realmente encontrei no meu cabeçalho de solicitação gzip compression = =. Fecho a mão manualmente.

Agora que sabemos o problema, a solução é muito fácil.

Primeiro vamos instalar o zlib com npm install zlib;

Depois de incluir no cabeçalho var zlib = require('zlib');

Depois de consultar a documentação oficial, descobri que há dois métodos de descompressão, um é sincrono e o outro é assíncrono.

Vou usar a forma assíncrona aqui.

zlib.unzip(chunk, function(error, res) {
  console.log(error);
  console.log(res+";
});

Aqui, o chunk é o nosso objeto buffer recebido. Note que o callback assíncrono tem dois parâmetros, o primeiro é a mensagem de erro e o segundo é a string html necessária.

Se precisar usar sincronização, chame zlib.unzipSync(buffer); ps: eu recebi um erro ao testar. Error: final inesperado do arquivo

Bem, até aqui, meu problema foi resolvido perfeitamente.

Acabou aqui, essa solução para o problema de código ilegível ao usar http request no nodejs é tudo o que vou compartilhar com vocês. Espero que isso ajude. E peço que vocês apóiem o Tutorial Grito.

Você Também Pode Gostar