【发布时间】:2013-04-08 23:35:54
【问题描述】:
我已经使用 Google Translate API 有一段时间了,没有任何问题。 我最近将我的应用程序推送到了我的新服务器,即使它在我的本地服务器上运行良好,相同的源代码总是给我“必需参数:q”作为错误消息。
我正在使用 NodeJS + ExpressJS + Request 来发送这个请求。这是我的测试用例:
var request = require('request');
request.post({
url: "https://www.googleapis.com/language/translate/v2",
headers: {"X-HTTP-Method-Override": "GET"},
form: {
key: /* My Google API server key */,
target: "en",
q: ["Mon premier essai", "Mon second essai"]
}
}, function(error, response, data) {
if (!error && response.statusCode == 200) {
console.log("everything works fine");
} else {
console.log("something went wrong")
}
});
在我的本地机器上运行让我“一切正常”,在我的服务器上运行它让我“出了点问题”。深入研究它,我收到上面提到的错误消息。 如您所见,我试图在一个请求中翻译两句话。这只是一个测试用例,但我确实需要通过 POST 请求来使用它,而不是做两个 GET 请求。
我不知道这是怎么回事,我仔细检查了我的 Google 设置,但没有发现哪里有问题。 此外,在我的服务器上使用具有相同 api 密钥的 Google Places APi 也没有问题。
我被困住了。有人知道这里出了什么问题吗?
【问题讨论】:
-
我想不出原因,但我建议您执行以下操作:创建一个将记录所有请求和请求参数的服务器。更改您的代码以调用该服务器而不是 googleapis。在本地机器和生产环境上运行它。由于谷歌基本上是说您的请求有问题。如果它们都是相同的请求,则可能存在与 IP 或位置相关的问题。还有一种可能是你的请求太长(可能是编码不同),api说q限制在5k左右。
-
@illniyar 感谢您的帮助,发现问题来自 RequestJS。
标签: node.js google-api google-translate