Articles of 获取

NodeJS,如何debuggingGET请求TLSSocket.socketOnData上的parsing错误?

我对NodeJS颇为陌生,并试图用AWS Lambda写一个简单的Alexa服务来告诉我房间的温度。 我遇到了一个困扰我的问题 – 当我尝试与https端点进行通信以查询家庭自动化恒温器的某些数据时 – 我的Node应用程序终止时出现错误: Error: Parse Error at TLSSocket.socketOnData (_http_client.js:362:20) at emitOne (events.js:96:13) at TLSSocket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:176:18) at TLSSocket.Readable.push (_stream_readable.js:134:10) at TLSWrap.onread (net.js:551:20) 这是一个非常简单的通过https的GET请求,端点的提供者没有使用Python的问题。 我尝试将我的代码移动到我的笔记本电脑上的本地节点设置,并仍然有问题(所以它不是AWS)。 因为它是https和我的控制之外的服务,我不能轻易wiresharkstream量发现,如果响应是以一些微妙的方式损坏 – 但我尝试使用Browsify转换代码运行在Web浏览器(我可以使用wireshark),当然,它的工作原理,我可以看到没有什么奇怪的JSON响应,然后我得到。 我已经尝试使用响应模块,而不是节点中的核心https库,但我仍然得到相同的基础错误。 我被困在我能做什么 – 而且不知道如何debugging。 它让我觉得格式问题或时间问题 – 但我不知道如何处理这个问题。 想法任何人? 我的代码如下所示: var https = require('https'); var crypto = require('crypto'); function executeHttpRequest(path, data, method, username, […]

你如何使用NodeJS在套接字上进行HTTP GET请求?

我正在使用硬件设备(我没有创build),它有一个标准的方式通过套接字连接与它通信。 设备通过联系我的服务器(NodeJS服务器)启动套接字连接。 我已经成功地build立了一个套接字连接… var socketServer = net.createServer() .listen(9999, function(){ console.log('SOCKET Listening at: http://localhost:9999'); }); socketServer.on('connection', function(sock) { console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort); console.log(sock); // Need to fire HTTP GET HERE }); 但是,我现在需要通过该套接字连接发送一个HTTP GET请求。 到目前为止,我可以找出如何做到这一点的唯一方法是手动 socket.write自己的GET。 我所希望的是一些像http这样的类,它允许你做类似… http.get(socket, function(res){ // Handler code }) 我几乎积极的问题是做我在NodeJS newb,所以我花了大约3-4小时淘金的计算器和谷歌的答案迄今没有成功。

Querystring与JSON数据在POST请求

我正在用Javascript写一个项目,使用node.js,express和mongodb,其中包括一个用于将图像发布到服务器的API。 当获取它们时,必要的参数进入查询string,如: domain.com/api/imgs?firstParam=XXX&secondParam=YYY 我不确定发送POST数据的最佳方式。 我到目前为止的想法是: 在查询string中完全发送数据(除了base64编码的img本身,它将在POST数据中) 从查询string中重用GET参数(我需要更新数据库中的数据),然后用POST发送附加参数 在这种情况下最好的做法是什么?

如何保留查询string中的types

我试图放在一起会消耗JSON数据的API,我有保留variablestypes的问题。 警告:我正在使用Node.js 鉴于数据: { id: "string", data: [ {input: [0,1,0], output: [1,1]}, {input: [1,0,0], output: [1,0]} ] } 当我做了一个jQuery的Ajax后请求与该数据它被转移为: data[0][input][] 0 data[0][input][] 1 data[0][input][] 0 data[0][output][] 1 data[0][output][] 1 data[1][input][] 1 data[1][input][] 0 data[1][input][] 0 data[1][output][] 1 data[1][output][] 0 id string 或者: id=string&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Binput%5D%5B%5D=1&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Boutput%5D%5B%5D=0 我需要能够做的是在服务器端解码数据,但是我的数据在数据中的所有值都被转换为string 。 有没有一种技术来保存一个值的types,即:“string”或“int”等? 我目前正在使用npm上的qs模块来parsing我的POST请求正文。

如何把不同的请求的响应放在与nodejs相同的文档中并请求?

嗨,我想把不同的请求的反应在同一个文件。 我有这个文件: var result = {google:"", twitter:"", facebook:""} 我想对这些网站(google.com,Facebook.com,twitter.com)做不同的GET请求,并把所有的结果放在通讯录中。 我尝试了嵌套的callback,但这样我必须先做谷歌调用,然后像这样的微博等: Request({ url:first_url, },function(err, response, body) { if (err) { request.log(err); }else{ risultato.google = body; Request({ url:second_url, },function(err, response, body) { if (err) { request.log(err); }else{ risultato.facebook = body; Request({ url:third_url, },function(err, response, body) { if (err) { request.log(err); }else{ risultato.twitter = body; console.log(result); } }); […]

<a>标签和获取请求之间的区别

我有一个可能很简单的问题。 什么是<a>标签和任何元素的正常GET请求之间的区别。 我知道<a>标签会自动将您发送到在其href属性中指定的url。 所以我假定Get请求在成功callback中做了类似的事情(如下所示) 但是让我们说,我也想发送一些信息,当一个例如<span>元素被点击,所以我写: $('span').click(() => { $.ajax({ url: '/someurl', type: 'GET', data: { title: someTitle, email: someEmail }, success: (data) => { window.location = '/someurl'; } }); }); 有没有办法用<a>标签来实现这一点? 将信息发送到服务器,以便在req.query.title和req.query.email可用? 做上面的ajax请求会运行我的app.get('/someurl',(req,res)=>{})两次,因为我发送一个GET请求来发送数据(标题和电子邮件),然后我正在做另一个GET请求,当我写window.location = '/someurl'我怎么能重做这个,所以它只发送GET请求一次,但也允许发送和存储信息的req对象,并确保浏览器现在显示/someurl 。

404请求expression路由时

我想了解快递和它如何处理路线。 我有一个域设置了以下结构 / app.js /public_html index.html 在app.js中,我build立了我的express服务器: let app = express(); app.post('/list', (request, response) => { //get data then… response.send(data) }); app.use(express.static('public_html')) app.listen(3000, function(){ console.log('listening'); }); 我运行与node app.js的应用程序 然后,在public_html目录的index.html中,我试图请求数据。 我只是做了一个简单的: fetch('/list').then(function(response) { console.log(response) }) 但是我得到了一个404作为回应。 我对以下几件事有点困惑: 我的networking服务器(Apache / Ubuntu)默认设置为从public_html目录中提供html。 这是否意味着我的整个节点的应用程序结构需要被移动到public_html文件夹和实际的HTML移动到一个static文件夹或东西? 那么港口呢? 节点应用程序在端口3000上侦听 – 但是我不确定如何(或如果)特别向端口发出请求。 路线path – 我张贴到/list但应该是../list ? 我还没有find适用于这个应用程序的configuration。 任何帮助,将不胜感激。

在`fetch()`上使用stream的优点是什么?

我试图使用OneDrive JS SDK下载文件,所以我使用了微软的代码: // Download a file from OneDrive let fs = require('fs'); // requires filesystem module client .api('/me/drive/root/children/Book.xlsx/content') .getStream((err, downloadStream) => { if (err) { console.log(err); return; } let writeStream = fs.createWriteStream('../Book1.xlsx'); downloadStream.pipe(writeStream).on('error', console.log); }); 因为我想让它在浏览器中工作(不仅仅是在Node中),所以我首先尝试了一些浏览器的stream库,但是没有任何工作。 最终,我只使用REST API和fetch() (SDK是REST API的封装)。 一个简单的fetch(url)做了这个工作。 所以我想知道,为什么MS要经过上面的所有stream代码的麻烦,当一条线可以做这个工作? 尤其是stream的performance好于fetch() 。 例如,当下载大文件的时候会获取冻结的应用程序,而stream不会? 还有其他的区别吗?

获取vs请求

我在使用JSONstream,并试图使用fetch来使用它。 该stream每隔几秒发射一些数据。 只有在streamclosures服务器端时,使用fetch来使用stream才能访问数据。 例如: var target; // the url. var options = { method: "POST", body: bodyString, } var drain = function(response) { // hit only when the stream is killed server side. // response.body is always undefined. Can't use the reader it provides. return response.text(); // or response.json(); }; var listenStream = fetch(target, options).then(drain).then(console.log).catch(console.log); […]

发送POST请求并通过Node.js获取数据

我一直在努力发送POST请求和使用Node.js获取数据 我一直在这样试用 var querystring = require('querystring'); var http = require('http'); var postData = querystring.stringify({ }); var options = { hostname: 'www.google.com', port: 80, path: '/', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': postData.length } }; var req = http.request(options, function(res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('BODY: […]