在一些实际场景应用中,我们需要在js代码中发送请求,来获取返回的结果来进行下一步代码的编写,下面是使用js发送post请求的部分代码,仅供参考。
const https = require('https');
const zlib = require('zlib');
const qs = require('querystring');
const HttpsProxyAgent = require('https-proxy-agent');
const http = require('http');
const HttpsProxyAgent = require('http-proxy-agent');
//上面是需要导入的包,下面是post请求的代码
var data = {
pageNum: 3,
UnitId: 0
};//这是需要提交的数据
var content = await qs.stringify(data);
let hostPort = bizArgs.proxy.proxyAddress;
let proxyAuth = bizArgs.proxy.proxyAuth;
hostPort = hostPort.replace(",", ":");
proxyAuth = proxyAuth.replace(",", ":");
// var proxy = 'http://user:pass@xxx.com:port';
var proxy = "http://" + proxyAuth + "@" + hostPort;
if (proxyAuth === "") {
proxy = "http://" + hostPort;
}
var agent = new HttpProxyAgent(proxy);
var options = {
hostname: 'zfxxgk.ndrc.gov.cn',
agent: agent,
path: '/web/dirlist.jsp?dirid=0&pid=0',
method: 'POST',
headers: {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "keep-alive",
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "http://zfxxgk.ndrc.gov.cn",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",
// "Cookie": cookie,
"Host": "zfxxgk.ndrc.gov.cn",
"Upgrade-Insecure-Requests": "1"
}
};
var req = await http.request(options, function (res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
// res.setEncoding('utf-8');
//返回数据流
postData.body = "";
var output = "";
//返回类型gzip需要解压,否则乱码
if (res.headers['content-encoding'] === 'gzip') {
var gzip = zlib.createGunzip();
res.pipe(gzip);
output = gzip;
} else {
output = res;
}
//数据
output.on('data', function (chunk) {
chunk = chunk.toString('utf-8');
postData.body += chunk;
console.log('BODY: ' + chunk);
});
// 结束回调
output.on('end', function () {
console.log("REBOAK:", postData.body);
});
});
await req.on('error', function (e) {
console.log('problem with request: ' + e.message);
});
await req.write(content);
await req.end();
await page.waitFor(3000);
//返回的结果保存在postData.body中