http:
const http = require('http')
const iconv = require('iconv-lite')
const URL = require('url')
let url = 'https://www.baidu.com'
let req = http.request({
host: URL.parse(url).host,
port: URL.parse(url).port || 80,
method: 'GET',
path: url,
headers: {
referer: url
},
timeout: 30000
}, res => {
let encoding = res.headers['content-type'].match(/charset=([^;,\s]+)/i)[1]
let body = []
res.on('data',chunk=>{
body.push(chunk)
})
res.on('end',()=>{
let chunkall = Buffer.concat(body)
body = iconv.decode(chunkall, encoding)
console.log(body)
})
})
req.end()
http2:
const http2 = require('http2')
const iconv = require('iconv-lite')
const URL = require('url')
let url = 'https://www.baidu.com'
const client = http2.connect(url, {})
.on('error', (err) => console.error(err))
.on('socketError', (err) => console.error(err))
let encoding = 'utf-8'
let headers = {
':authority': URL.parse(url).host,
':method': 'GET',
':scheme': URL.parse(url).protocol,
':path': URL.parse(url).path,
'referer': url
}
const req = client.request(headers)
req.on('response', (headers) => {
let type = headers['content-type']
if(type){
let result =type.match(/charset=([^;,\s]+)/i)
if(result){
encoding = result[1]
}
}
})
//req.setEncoding('utf8')
let body = []
req.on('data', (chunk) => {
body.push(chunk)
})
req.on('end', () => {
let chunkall = Buffer.concat(body)
body = iconv.decode(chunkall, encoding)
console.log(body)
client.close()
})
req.end()