gpt4 book ai didi

Javascript - 来自服务器/后端的 POST 请求不起作用

转载 作者:行者123 更新时间:2023-11-30 11:23:17 25 4
gpt4 key购买 nike

我正在使用 API 进行文本翻译(您可以在这里找到它:Yandex)。

下面这段代码在前端并且运行良好:

var url = "https://translate.yandex.net/api/v1.5/tr.json/translate",
keyAPI = "myKey/hidden";
var xhr = new XMLHttpRequest(),
textAPI = "fa asta sa fie in engleza";
langAPI = "en";
data = "key="+keyAPI+"&text="+textAPI+"&lang="+langAPI;

xhr.open("POST",url,true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(data);
xhr.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) {
var res = this.responseText;
var json = JSON.parse(res);
if (json.code === 200) {
console.log( json.text[0]);
}
else {
console.log("Error Code: " + json.code);
}
}
};

浏览器中的控制台输出:

do this to be in English

所以没关系。

但是,我需要在后端执行此操作。所以,我知道 XMLHttpRequest 是内置浏览器,但不是在 Node 中,因此我使用安装它:npm install xmlhttprequest 我尝试使用与前端相同的代码,但我在 xhr.onreadystatechange 上添加了一个日志来告诉我状态:

 xhr.onreadystatechange = function() {
console.log(this.status);
if (this.readyState === 4 && this.status === 200) {
var res = this.responseText;
var json = JSON.parse(res);
if (json.code === 200) {
console.log( json.text[0]);
}
else {
console.log("Error Code: " + json.code);
}
}
};

我得到的是:

0

415

作为状态。

所以没有成功。我决定改用请求:

var url = "https://translate.yandex.net/api/v1.5/tr.json/translate";
var keyAPI = "hidden;
var xhr = new XMLHttpRequest();
var textAPI = "fa asta sa fie in engleza";
var langAPI = "en";

request.post({
url: url,
body: JSON.stringify({
key : keyAPI,
text: "tradu",
lang : langAPI
}),
json: true
}, function(err, response, body) {
if(err) {
console.log(err);
return;
}
console.log(body);
});

我得到的输出是:

{ code: 415, message: 'Unsupported media type' }

再一次,它不起作用。我还尝试在发布请求中添加 header ,如下所示:

headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}

但这并没有什么不同。

我做了一些挖掘,发现状态 415 表示不受支持的媒体类型,我还阅读了一些关于此的帖子/修复,但没有帮助我。

最佳答案

要让它工作,请使用 form 键发送您的数据(使用请求)

var url = "https://translate.yandex.net/api/v1.5/tr.json/translate";
var keyAPI = "hidden";
var textAPI = "fa asta sa fie in engleza";
var langAPI = "en";

request.post({
url: url,
form: {
text: textAPI,
key: keyAPI,
lang: langAPI
},
}, function(err, response, body) {
if(err) {
console.log(err);
return;
}
console.log(body);
});

关于Javascript - 来自服务器/后端的 POST 请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48990478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com