无法使用 node.js 和 "request" 模块向 UTF-8 link 发出请求
Can't make request to UTF-8 link using node.js and "request" module
出于某种原因,我遇到了 "request" 模块的问题。
var options = {
protocol: "https",
host: "euw.api.pvp.net",
pathname: "/api/lol/euw/v1.4/summoner/by-name/" + name,
search: "api_key=api-key-deleted"
};
var riotURL = url.format(options);
request(riotURL, function (error, response, body) {
if (!error && response.statusCode == 200) {
//doing someting
}
});
然后就很奇怪了。如果名称很简单,例如 "Dager"、"hi mom" 等,我的应用程序运行良好。但是当我尝试输入 "növentaynueve"、"Mìnou" 之类的名称时 - 我的请求 return 404 响应。
我设法获得了完整的回复文本:http://pastebin.com/8Vra1i4X。我不明白发生了什么。响应中的所有链接都是正确的。但它看起来像请求模块而不是向
发送请求
https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/n%C3%B6ventaynueve?api_key=api-key-deleted
向
发送请求
https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/n%EF%BF%BDventaynueve?api_key=api-key-deleted
但是为什么呢?
解决了 encodeURI()
函数的问题。
有趣的是:在 Debian 上,即使没有 encodeURI()
它也能正常工作。但是在 Windows 10 上没有。两个源文件都是 UTF-8。
出于某种原因,我遇到了 "request" 模块的问题。
var options = {
protocol: "https",
host: "euw.api.pvp.net",
pathname: "/api/lol/euw/v1.4/summoner/by-name/" + name,
search: "api_key=api-key-deleted"
};
var riotURL = url.format(options);
request(riotURL, function (error, response, body) {
if (!error && response.statusCode == 200) {
//doing someting
}
});
然后就很奇怪了。如果名称很简单,例如 "Dager"、"hi mom" 等,我的应用程序运行良好。但是当我尝试输入 "növentaynueve"、"Mìnou" 之类的名称时 - 我的请求 return 404 响应。
我设法获得了完整的回复文本:http://pastebin.com/8Vra1i4X。我不明白发生了什么。响应中的所有链接都是正确的。但它看起来像请求模块而不是向
发送请求https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/n%C3%B6ventaynueve?api_key=api-key-deleted
向
发送请求https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/n%EF%BF%BDventaynueve?api_key=api-key-deleted
但是为什么呢?
解决了 encodeURI()
函数的问题。
有趣的是:在 Debian 上,即使没有 encodeURI()
它也能正常工作。但是在 Windows 10 上没有。两个源文件都是 UTF-8。