Не удается обработать URL-адрес модулем запроса

Я загружаю цену товара Steam из официального API с помощью модуля запроса в node.js (http://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name=), и он работает очень хорошо, за исключением случая, когда элемент, имя которого начинается со звездочки (★), тогда URL-адрес выглядит обработанным узлом это http://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name=★%20M9%20Bayonet%20%7C%20Stained%20(Field-Tested). При вводе вручную в браузере он работает хорошо, но когда это делает мой бот Steam, Steam возвращает {"success":"false"}. Я думаю, причина того, что он не проходит через звездочку (★), как мне это исправить?


person irqize    schedule 19.01.2016    source источник
comment
Поскольку URL-адрес из браузера работает, вы всегда можете просто открыть вкладку сети в отладчике и посмотреть, какой именно закодированный URL-адрес отправляется на сервер, чтобы увидеть, чем ваш URL-адрес отличается от этого.   -  person jfriend00    schedule 19.01.2016


Ответы (1)


Полностью кодируйте URL-адрес market_hash_name перед передачей его в request библиотеку.

request = require("request")
request("http://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name=%e2%98%85+M9+Bayonet+%7c+Stained+(Field-Tested)", function(e, response, body) {
    console.log(body)
});
person Adam Lamers    schedule 19.01.2016
comment
Теперь это работает! Я использовал функцию encodeURIComponent() для кодирования имени элемента. - person irqize; 19.01.2016