出于某种原因,我对“请求”模块有疑问。
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”,“嗨妈”等等,我的应用程序运行正常。但是当我尝试输入“növentaynueve”,“Mìnou”这样的名字时 - 我的请求会返回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
但为什么?
答案 0 :(得分:0)
解决了encodeURI()
功能的问题。
有趣的是:在Debian上,即使没有encodeURI()
也能正常工作。但在Windows 10上没有。两个源文件都是UTF-8。