Node.js请求返回错误:设置选项参数时连接ECONNREFUSED
请求工作正常,如果我发送带有必要属性的url作为第一个参数,但每次尝试发送包含请求属性的options对象参数时都失败:
"use strict" var https = require('https'), request = require('request'); var obj = { translate: function(textToTranslate) { var options = { url: "https://translate.yandex.net/api/v1.5/tr.json/translate", qs: { key: process.env.TRANSLATION_APP_TOKEN, lang: "en-ru", text: textToTranslate } }, translationRequest = https.request(options, function(response) { response.on('data', function (chunk) { console.log(JSON.parse(chunk).text[0]); }); }); console.log(options); translationRequest.on('error', function (response) { console.log(response); }); translationRequest.end(); } }; obj.translate("hello");
我正在使用qs选项传递参数,但尝试formData和正文,但它不工作。
感谢您的任何帮助
这适用于我,使用request
模块(你已经加载),而不是https
。 根据文档 ,您需要通过GET请求传递这些参数作为查询参数(所以POST表单数据将不起作用):
"use strict" var https = require('https'), request = require('request'); var obj = { translate: function(textToTranslate) { var options = { url: "https://translate.yandex.net/api/v1.5/tr.json/translate", qs: { key: "<redacted>", lang: "en-ru", text: textToTranslate } } request.get(options, function(e, r, body) { console.log(body); }); } }; obj.translate("hello");
用有效的密钥对API进行testing,得到以下回应:
{"code":200,"lang":"en-ru","text":["привет"]}
对于什么是值得的,它不工作的原因就像你用https
模块的options
做的那样,是因为这是为request
而devise的语法而不是https
。 为了使用https
,你需要遵循这个模式:
options = { hostname: "translate.yandex.net", path: "/api/v1.5/tr.json/translate?key=" + process.env.TRANSLATION_APP_TOKEN + "&lang=en-ru&text=" + textToTranslate }
(文档: https : //nodejs.org/api/http.html#http_http_request_options_callback )
- Native Node.JS模块 – 从参数中parsingint
- 在Angular Universal应用程序中从ExpressJS获取vaues
- 在基本的Express.js应用程序中“查找视图失败”
- angular-phonecat教程 – web-server.js给node.js 404错误
- 如何将ipv6地址转换为nodejs expressjs中的ipv4地址?
- 在MySQL上使用Promise进行并行插入查询失败
- 如何在Node.js中以非阻塞方式将大量的数据从subprocess发送到父进程?
- 应该是在应用程序逻辑处理之前克隆的input数据对象?
- 本地testingAzure Mobile Auth – 无效的jwt签名