工作日志-2019-01-18-闪电空投记录

版权声明:忠于祖国,忠于人民 https://blog.csdn.net/boss2967/article/details/86538570

1. node的http模块的案例

  • 为了简单起见,我直接将hard-coding的数据进行转发
/**
 * nodejs向apache发送请求,接收响应后返回到浏览器端
 */
app.get('/nodeReq', function(req,res,next){
    var data = {
        age: 20,
        name: "cici",
        like: "shopping"
    };
    data = require('querystring').stringify(data); //数据以url param格式发送
    data = JSON.stringify(data); //数据以json格式发送
    console.log(data);
    var opt = {
        method: "POST",
        host: "localhost",
        port: 8012,
        path: "/php/get_data.php",
        headers:{
            //"Content-Type": "application/x-www-form-urlencoded", //for url parameter
            "Content-Type": "application/json", // for json data
            "Content-Length": data.length
        }
    };

    var req = http.request(opt, function(apacheRes){//建立连接 和 响应回调
        if(apacheRes.statusCode == 200){
            apacheRes.setEncoding('utf8');
            var body = "";
            apacheRes.on('data', function(recData){ body += recData;});
            apacheRes.on('end', function(){ res.send(body); /*发送收到的响应*/ });
        }else{
            res.send(500, "error");
        }
    });
    req.write(data + "\n"); //发送请求
    req.end(); //请求发送完毕
});

2. 用http.request发送文件给服务端, 或带参post数据到服务端

var http = require('http');
var fs = require('fs');
var queryString = require('querystring');

var boundaryKey = 'A' + new Date().getTime(); //随便加个前缀A 避免全数字作为分界符

/**
 * 带参数发post请求
 */
function doPost(){
    var opt = {
        host:'localhost', //注意:不用协议部分(http://)
        port:'80',
        path: '/testonly/doupload.php', //斜杠开头
        method:'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'} //设置content-type 头部
    };

    var body = '';
    var req = http.request(opt, function(res){
        res.statusCode == 200 && console.log('REQUEST OK..' );
        res.setEncoding('utf8');//res为ClientResponse的实例,是readableStream, 设置字符编码

        res.on('data', function(chunk){
            body += chunk;
        }).on('end', function(){
            console.log('Got data: ', body);//end事件中 打印全部响应数据
        });
    }).on('error', function(err){
        console.log('error: ', err.message);
    });

    var data = {name:'sindy', age:22};
    var data1 = JSON.stringify(data);
    var data2 = queryString.stringify(data); //注意 querystring.stringify 和 JSON.stringify的区别
    console.log(data1);
    console.log(data2);

    req.write(data2); //req为ClientRequest的实例,是writableStream,写数据到流中
    req.end();//结束请求
}

/**
 * 发送文件给服务器并带上其他表单字段数据
 */
function doUpload(){
    var opt = {
        host:'localhost',
        port:'80',
        path: '/testonly/doupload.php',
        method:'POST',
        headers: {'Content-Type':'multipart/form-data; boundary='+boundaryKey, 'Connection':'keep-alive'} //注意:上传文件时的 content-type 设置
    };

    var body = '';
    var req = http.request(opt, function(res){
        res.statusCode == 200 && console.log('REQUEST OK..' );
        res.setEncoding('utf8');

        res.on('data', function(chunk){
            body += chunk;
        }).on('end', function(){
            console.log('Got data: ', body);//php 返回 $_FILES 和 $_POST的内容给客户端
        });
    }).on('error', function(err){
        console.log('error: ', err.message);
    });


    
    //ClientRequest writableStream 注意:文件字段的分界符
    req.write('--'+boundaryKey+'\r\nContent-Disposition:form-data; name="upfile"; filename="test.zip"\r\nContent-Type:application/x-zip-compressed'); 

    // 1M缓冲
    var fileStream = fs.createReadStream('test.zip', {bufferSize: 1024 * 1024});
    fileStream.pipe(req, {end: false});

    fileStream.on('end', function(){
        // ::注意::文件字段内容和其他字段之间空2行,字段名和字段值之间空2行
        req.write('\r\n\r\n--'+boundaryKey+'\r\n'+'Content-Disposition: form-data; name="submit"\r\n\r\n'+'sendfile');
        req.end('\r\n--'+ boundaryKey + '--'); //注意:结束时的分界符 末尾'--'
    });
}
// doPost();

doUpload();

3.闪电空投


const fs = require("fs");
const xlsx = require('node-xlsx');
const Web3 = require("web3");
const log4js = require('log4js')
const ajax = require('ajax');
const http = require('http');
const queryString = require('querystring');
const logger = log4js.getLogger();
var web3 = new Web3();
//

// <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
// ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < MARK < OFF
logger.level = 'info';
logger.info("Some debug messages");
console.log("---",ajax.post);
//
let a = {ab:"ss"}
let  url = 'http://127.0.0.1:3003/Bolt/flyDrop';
let  data1 = {de:"zhangsan"};
//
/**
 * 带参数发post请求
 */
function doPost(){
    var opt = {
        host:'127.0.0.1', //注意:不用协议部分(http://)
        port:'3003',
        path: '/Bolt/flyDrop', //斜杠开头
        method:'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'} //设置content-type 头部
    };

    var body = '';
    var req = http.request(opt, function(res){
        res.statusCode == 200 && console.log('REQUEST OK..' );
        res.setEncoding('utf8');//res为ClientResponse的实例,是readableStream, 设置字符编码

        res.on('data', function(chunk){
            body += chunk;
        }).on('end', function(){
            console.log('Got data: ', body);//end事件中 打印全部响应数据
        });
    }).on('error', function(err){
        console.log('error: ', err.message);
    });

    var data = {name:'sindy', age:22};
    var data1 = JSON.stringify(data);
    var data2 = queryString.stringify(data); //注意 querystring.stringify 和 JSON.stringify的区别
    console.log(data1);
    console.log(data2);

    req.write(data2); //req为ClientRequest的实例,是writableStream,写数据到流中
    req.end();//结束请求
}

doPost();


// ajax.postJSON(url,data1,function(err,data){
// if (!err){
//   console.log("----------",data);
// }else{
//  console.log("------err",err);
// }
//
// });

// ajax.post('http://127.0.0.1:3003/Bolt/flyDrop',"abc",(err,data)=>{
//   if(!err){
//     console.log("发送交易成功");
//   }else{
//  console.log("发送错误",err);
//   }
// });
//
//01. 读取xlsx文件
let Filesdata = fs.readFileSync('testdemo1.xlsx');
logger.info("读取文件成功");
//02.	序列化数据
let Workdata = xlsx.parse(Filesdata);
logger.info("序列化数据成功");
//03.	校验数据
logger.info("数据校验中......................");
 console.log("------------------",Workdata[0]);
let data = Workdata[0].data;
let  lengths =data.length;
// console.log("数据对象是:",data);
//结果集
let result = {
  State: 0, //0 1 3
  Tote: lengths,
  Valid: 0,
  UnValid: 0,
  ValidData: [],
  UnValidData: [],
  Bz: [],
  sData:{
    address:[],
    value:[],
    state:[]
  }
}
// 01. 首先判断数据长度
if (data.length <= 0) {
  //对象长度小于0
  logger.error("数据长度小于0");
  result.State = 3; //
  return result;
}
//02. 判断地址和内容是否为空
for (let i = 0; i < lengths; i++) {
  //01.首先判断2个参数都为空
  if ((data[i][0] == null ||data[i][0] == undefined ||data[i][0] == '') && (data[i][1] == null || data[i][1] == undefined || data[i][1] == '')) {
    //01.如果两位数据都是空
    result.UnValid += 1;
    //对象保存 序号:数据

    let rows = {
      no:  i,
      address:data[i][0],
      value: data[i][1],
      state: 0
    }
    // let cData = {i:param[i].no,data[i][0],data[i][1],Json_list.STATES_PAR.CheckPass}};
    result.UnValidData.push(rows);
    //
    continue;
  } else {
    console.log("411");
    //02. 判断地址为空的情况
    if (data[i][0] == null ||data[i][0] == undefined ||data[i][0] == '') {
      //
      console.log("6");
      result.UnValid += 1;
      //对象保存 序号:数据
      let rows = {
        no: i,
        address:data[i][0],
        value: data[i][1],
        state: 0
      }
      result.UnValidData.push(rows);
      continue;
    } else if (data[i][1] == null || data[i][1] == undefined || data[i][1] == '') {
      //值
      console.log("5");
      result.UnValidData += 1;
      //对象保存 序号:数据
      let rows = {
        no: i,
        address:data[i][0],
        value: data[i][1],
        state: 4
      }

      result.UnValidData.push(rows);
      continue;
    }
  }
  //02. 判断地址是否合法

  if (!web3.isAddress(data[i][0])) {
    console.log("423");
    //如果不是有效地址
    result.UnValid += 1;
    //对象保存 序号:数据
    let rows = {
      no: i,
      address:data[i][0],
      value: data[i][1],
      state: 4
    }
    result.UnValidData.push(rows);
    continue;
  } else {
    console.log("地址校验通过");
    //如果是有效地址
    result.Valid += 1;
    //对象保存 序号:数据
    let rows = {
      no: i,
      address:data[i][0],
      value: data[i][1],
      state: 5
    }
    result.ValidData.push(rows);
    //分开追加数据
    result.sData.address.push(data[i][0]);
    result.sData.value.push( parseInt(data[i][1]+'00000000'));
  }
  //数据处理完成后,返回参数
  //处理完标志
  result.State = 3;
}
console.log("--------数据处理完成",result.sData);

//发送交易
// ajax.post(url,"afaafaaaaaaaaaaaaaaaaaaaaaaaaaaaa",(err,data)=>{
//   if(!err){
//     console.log("发送交易成功");
//   }else{
//  console.log("发送错误",err);
//
//   }
// });

猜你喜欢

转载自blog.csdn.net/boss2967/article/details/86538570