Tag: 请求

无法将节点请求发布到salesforce的web-to-lead

我们已经要求我们的客户与其销售人员进行整合。 但是,他们拒绝给我们一个oAuth标记。 他们提供的是一个Web到铅的oid 。 本质上,Web-to-Lead是一个简单的Web表单,它通过一个oid生成,将其与salesforce账户相关联。 但是,我无法使用curl,postman或node.js和请求模块获取其他任何信息以发布到salesforce。 我设置了一个沙箱来testing这个,因为他们抱怨说他们没有得到应用程序。 我也注意到,这些应用程序没有出现,但是如果我使用salesforce为我生成的实际表单,一切似乎都正常。 基本上我的代码就像这样: var request=require("request"); var form={ "oid":"xxxx", "first_name":"TEST", "last_name":"TEST", "email":"xxxx@gmail.com", "street":"xxx Some Road", "city":"somewhere", "state":"Wisconsin", "zip":"54944", "00No00000045JeV":"Internet", "00No00000045Jef":"American Driver Network", "00No00000045Jek":"Class A", "00No00000045Jep":"50", "00No00000045Jf4":"0", "00No00000045JfE":"0", "00No00000045JfJ":"0", "retURL":"http://" }; var options={ url:"", form:form }; request.post(options,function(err,resp,body){ //salesforce gives no useful response so do nothing }); 请求模块应该适当地设置我的标题。 销售队伍forms: <!– ———————————————————————- –> […]

Node / Express / Request – 尝试使用参数代理POST请求抛出“Write after end”

我试图将所有/ api /请求从本地节点服务器代理到远程服务器,同时向它们embedded一些authentication参数。 我目前的做法似乎工作正常GET的查询参数和POST,只要我不给“表单”参数的请求库,但只要我包括它,服务器开始抛出错误:结束后写。 var express = require("express"); var request = require("request"); var parser = require("body-parser"); var strftime = require("strftime"); var app = express(); var path = require("path"); var port = 80; var apiUrl = "http://example.com/"; var apiUser = "example"; var apiPass = "example"; app.use(express.static(path.join(__dirname, "/dist"))); app.use(parser.json()); app.use(parser.urlencoded({extended: true})); app.get("/api/*/", function(req, res) { console.log((strftime("%H:%M:%S") + […]

下载图像并使用multipart / form-data将其发送到API

我试图从互联网发送图像到一个API使用multipart/form-data 。 我能够通过使用request.pipe(fs.createWriteStream)将图像保存在临时文件夹中,并使用fs.createReadStream 但是,我怎么能做到这一点,而不保存在临时文件夹? 我试图创build一个新的request并发送身体作为一个new Buffer但没有奏效。 额外的信息: 我正在实施Telegram Bot API方法sendPhoto: https ://core.telegram.org/bots/api#sendphoto 我正在使用请求模块进行集成: https : //github.com/request/request 谢谢。

如何用nodejs处理超时请求

所以,我向服务器发出这个请求,我设置了一个超时,我想处理超时事件,但是我也想处理“中止”事件,并且不同的事件。 我设法做到这一点,但我想知道是否有更好的方法来做到这一点。 代码如下所示: makeRequest = function(json, cb){ var requestError request({ url: REQUEST_URL, json: json, timeout: 3000, headers: { 'Content-Type': 'application/json' } }, function(err, res, body){ if(err) requestError = err else cb(null, res, body) }).on('abort', function(){ setTimeout(function({ if(requestError != 'ETIMEDOUT') cb(httpStatusCode.REQUEST_TIMEDOUT) else cb(httpStatusCode.REQUEST_ABORTED }, 1000) }) } 我注意到,在超时事件中,'abort'事件都被触发,请求callback被调用,所以我使用setTimeout函数等待请求callback,并处理'abort'监听器中的错误。 这似乎是一个愚蠢的做法,我在网上search,并没有find一种方式哟只处理callback事件。 我也注意到,超时会触发on。('error',function(err){})事件,我可以处理这个错误,但是它也会调用on('abort',function(){})事件并最终调用主callback(CB)两次,崩溃我的应用程序。 有没有办法,我可以只有一个事件超时,只有一个中止,所以我不必使用setTimeout? 或者,我的req对象中是否有任何属性可以检查该请求是否超时? 或者你有什么其他的build议来解决我的问题,而不是丑陋的方式? 我正在使用nodejs 0.12.2和请求2.55.0谢谢!

NodeJS请求错误发送multipart / form-data

我正在使用Node.js应用程序作为Web服务的代理。 我能够传递简单的应用程序/ JSON请求身体分析器,但它不能处理多部分/表单数据。 为此,我正在尝试使用请求模块,但在将文件附加到请求时出现错误: 错误:结束后写入 在ClientRequest.OutgoingMessage.write(_http_outgoing.js:413:15) 在Request.write(./ node_modules / request / request.js:1362:25) 以下是触发此错误的代码: var form_data = {}; for (var key in req.files){ form_data[req.files[key].fieldname] = fs.createReadStream(req.files[key].path); log.debug("File :", req.files[key].fieldname) } var multipart_request = request_module({ url: 'http://example.com', method: 'POST', headers: req.headers, body: JSON.stringify({<some content here>}), formData: form_data }, function(error, response, body){ if(error){ log.debug(error); res.status(500).send('{"message": "Server error.}'); } […]

promisify请求模块后如何正确使用putAsync

我在这里和那里search,结果没有发现有关蓝鸟的promisified请求的putAsync方法。 var request = require('request'); var Promise = require('bluebird'); Promise.promisifyAll(require("request")); request.putAsync({ uri: buApiUrl, headers: { 'content-type': 'application/json' }, body: JSON.stringify({ name: BU, workstations: formattedWorkStaions[BU] }) }).spread(function (response, body) { debugHelper.log(body); }).catch(function (err) { debugHelper.error(err); }); 以上是我的程序中的代码片段。 而且它不发送放置请求。 在使用postAsync的时候,如果会发送post请求成功。 任何人都可以解释为什么吗

Node.js:将请求的inputinput到crypto.hash中

我想从URL中计算资源的散列(例如PDF)。 为此,我写了 const computeHash = co.wrap(function* main(url) { const response = yield promisify(request)(url); // assume response.status === 200 const buf = new Uint8Array(response.arrayBuffer); const hash = crypto.createHash('sha1'); hash.update(buf, 'binary'); return hash.digest('hex'); }); 要使用的 const hash = yield computeHash('http://arxiv.org/pdf/1001.1234v3.pdf'); 我喜欢的代码是: 这是一个发电机,所以我可以yield它。 距离async / await只有一步之遥。 我不喜欢的东西: 它没有正确计算散列。 🙂 request完成,响应主体作为一个整体传送到hash函数中。 我宁愿将request的输出request给散列函数。 任何提示?

Node.js(ES6) – 用Promise.all保证控制stream

我正在尝试创build一个处理并行HTTP请求的队列。 为每个HTTP请求生成一个请求对象,例如 { method: 'POST', uri: 'http://posttestserver.com/post.php', body: { some: 'foo' }, json: true } 我传入这些对象的数组,并希望将它们添加到队列中,然后执行实际的请求。 问题 :Promise.all语句在返回之前等待所有请求完成。 问题 :我希望将所有任务添加到队列中,并在每个请求完成后返回 ,而不是等待它们全部。 任何人都可以build议如何分开逻辑,使请求从任务添加到队列? 注意:promise-queue和request-promise都返回promise。 这是我有: "use strict"; const Queue = require("promise-queue"); const rp = require('request-promise'); const maxConcurrent = 10; const maxQueue = Infinity; const queue = new Queue(maxConcurrent, maxQueue); var options = [ { method: 'POST', […]

节点SOAP WSDL请求不完整(只有一些块)

我无法使用node-soap npm模块访问SOAP Web服务。 这就是我想要的: var url = 'https://ws-uat.ewinerysolutions.com/2.00/EWSWebServices.asmx?wsdl'; soap.createClient(url, function(err, client) { if(err) { console.log(err); } console.log(client.describe()); } 这不会出错,但会logging一个空的对象。 检查client显示返回的XML被截断,这反过来使node-soap模块不能构build适当的客户端。 XML的确切长度在16348字节的数量上波动。 如果我移动WSDL以引用本地文件,则client.describe()将按预期执行,并且对Web服务的调用也可用。 然而,对这种请求的更长的回应也会以类似的方式截断。 这导致我相信有一些东西在所有的数据块被接收之前closures了连接,所以我检出了请求 npm模块(也与节点打包在一起)。 为了解决这个问题,我试图只使用请求模块来检索WSDL : var request = require('request'); var body = ""; request.get('https://ws-uat.ewinerysolutions.com/2.00/EWSWebServices.asmx?wsdl') .on('data', function(data){ body += data; }).on('end', function() { console.log(body); }) 查看返回被截断的XML正文的实时版本 。 我已经有了这些工作之前,这些相同的库,只是为了确保我已经尝试运行相同的程序与一系列旧版本的依赖库。 我对这个东西也还是比较新的,所以任何帮助/指针都将不胜感激!

请求模块,当浏览器取消时如何停止stream式传输

我想用我的服务器作为代理从另一台服务器stream式传输远程文件。 我有两个源代码来完成这项工作 http = require('http') http.createServer(function(req, res) { var externalReq = http.request({ hostname: "brave-download.global.ssl.fastly.net", path: "/releases/0.7.16/winx64/BraveSetup.exe" }, function(externalRes) { res.setHeader("content-disposition", "attachment; filename=File.exe"); externalRes.pipe(res); }); externalReq.end(); }).listen(8080); 有了上面的代码,当我取消下载时,服务器(我的本地服务器)也将停止从远程服务器获取数据。 我有另一个源代码 var http = require('http'), request = require('request'); http.createServer(function(req, res) { res.setHeader("content-disposition", "attachment; filename=File.exe"); request('https://brave-download.global.ssl.fastly.net/releases/0.7.16/winx64/BraveSetup.exe').pipe(res); }).listen(8080); 这个源代码可以完成像上面那样的工作。 但是,当我从我的浏览器取消下载。 它不会停止从远程服务器获取数据。 它一直在获取数据,直到下载完成。 我的问题是我怎样才能使第二个代码停止从远程服务器获取数据,一旦我取消下载。