美文网首页
nodejs request 实现同步请求

nodejs request 实现同步请求

作者: ZshGjl | 来源:发表于2018-12-24 18:34 被阅读113次

nodejs很方便的就是引入各种各样的包,但是要区分同样的请求,不一样的操作。

今天给大家介绍,我在工作中遇到3天的一个bug,连续发送post 请求得不到响应 ,底层不报错。

不同的三种方式发送:

           1、  let http = require('http');

   http.request 请求 ,相信大家都用过。
for(let i =0;i<10;i++){

let http = require('http');

let post_data =JSON.stringify({

'txid':Math.random().toString(32).slice(2),

'dataHash':Math.random().toString(32).slice(2),

'data':Math.random().toString(32).slice(2),

'publicKey':Math.random().toString(32).slice(2),

'signature':Math.random().toString(32).slice(2),

'remark':'',

'appId':Math.random().toString(32).slice(2)

});

console.log(post_data);

let options = {

hostname:'10.10.144.30',//此处不能写协议,如 : http://,https://  否则会报错

      port:7451,

path:'/UChains/poe/poe/transaction',

method:'POST',

headers: {

'Content-Type':'application/x-www-form-urlencoded',

'Content-Length':Buffer.byteLength(post_data)

}

};

console.log('________Send__________');

let req =http.request(options,function(res){

console.log('________success_________');

console.log('STATUS:'+res.statusCode);

console.log('HEADERS:'+JSON.stringify(res.headers));

res.on('data',function(chunk){

console.log('BODY:'+chunk);

});

});

req.write(post_data);

req.end();

}

            2、const request = require('request-promise');

for(let i = 0;i<10;i++) {

const request = require('request-promise');

let zsh = {

'txid': 'AJECb3aQseQ7idRcFpGiPEBpki8Ec2cY',

'dataHash': '4iKD7mJsHJBB7r2d48hr8mk86rmzsnHE',

'data': 'yW3fSi3nCTmS6sEstafeSSNMmRRxZMNX',

'publicKey': 'tDrcktHMM4zD6FPbsyPRxfccNaH5BHMJ',

'signature': 'fnv624629k8',

'remark': '',

};

let url ='http://10.10.144.30:7451/UChains/poe/poe/transaction';

//uri: 'http://192.168.56.101:7451/UChains/poe/poe/transaction;

console.log(zsh);

let options = {

uri: url,

method: 'POST',

json: zsh

};

request(options, function (err, response, body) {

if (!err && response.statusCode === 200) {

console.log(response.statusCode, body);

return Promise.resolve(body);

} else {

console.log('Send  Post postContract, ' + (err.stack ? err.stack : err));

return Promise.reject(err);

}

});

       *     3、let request = require('sync-request');    

let zsh = {

'txid': 'AJECb3aQseQ7idRcFpGiPEBpki8Ec2cY',

'dataHash': '4iKD7mJsHJBB7r2d48hr8mk86rmzsnHE',

'data': 'yW3fSi3nCTmS6sEstafeSSNMmRRxZMNX',

'publicKey': 'tDrcktHMM4zD6FPbsyPRxfccNaH5BHMJ',

'signature': 'fnv624629k8',

'remark': '',

};

let request = require('sync-request');

for(let i=0;i<10;i++){

let res = request('POST', 'http://10.10.144.30:7451/UChains/poe/poe/transaction', {

json:zsh

});

console.log(zsh);

console.log(JSON.parse(res.getBody('utf8')));

}

 测试之后发现 应用sync-request 实现同步操作

大家可以测试使用,function + async  + wait   settimeout 使用 是否能实现同步情况 、

相关文章

  • nodejs request 实现同步请求

    nodejs很方便的就是引入各种各样的包,但是要区分同样的请求,不一样的操作。 今天给大家介绍,我在工作中遇到3天...

  • node服务器

    作者: 叶茂;标签: nodejs,http http.createServer request.url 请求的...

  • okhttp分析

    okhttp使用分为同步请求和异步请求:异步请求: request是一个请求对像,包含了请求url,methord...

  • servlet请求转发

    请求转发时会共享request变量,但请求跳转时不共享该变量。通过request.sendRedirect()实现...

  • Okhttp源码阅读理解(一)

    Okhttp之Get请求 一.Okhttp基本使用 二.Request不论是同步请求还是异步请求,都会往Okhtt...

  • OKHttp源码分析与手写实现

    1,使用 1.1异步GET请求 1.2同步GET请求 2,分析源码 new Request.Builder().u...

  • 微信小程序http请求封装

    微信小程序中request请求都是异步请求的,封装的http请求 使用promise请求将异步请求变成同步化,保存...

  • nodejs实现定时发送天气情况

    nodejs实现天气预报的发送,主要用到了nodejs的nodemailer模块以及request模块;天气的ap...

  • Volley 之 Request篇

    与Request相关的类 Request:实现一个请求的基类 HttpHeaderParse:实现对响应头的解析 ...

  • CSRF

    Django中的实现 内部函数 process_request将请求中的csrftoken存在request的ME...

网友评论

      本文标题:nodejs request 实现同步请求

      本文链接:https://www.haomeiwen.com/subject/qnszkqtx.html