2015-05-06 25 views
3

我從我的JSON調用中得到了一個平滑的響應!這是我的響應輸出: Console OutputNodeJS來自JSON調用的奇怪響應

這是我的JSON請求:

request({ 
url: url, 
json: true 
}, function (error, response, body) { 
    if (!error && response.statusCode === 200) { 
     console.log(body) 
    } 
}) 

我覺得這件事情錯的字符集,但我不明白我怎麼可以改變這一點。

解決方案:

// Had to decode url 
var encoded = encodeURIComponent(name); 
var url = "xxx" + encoded; 
+0

'的contentType: 「應用程序/ JSON;字符集= UTF-8」,'介紹** **請求不響應。 – Quentin

+0

您需要分享您用於生成響應的代碼。我們無法通過查看請求來判斷它有什麼問題。 – Quentin

+0

@Quentin這是我使用的一個示例url:http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=StatTrak%E2%84%A2%20UMP-45%20|%20Delusion%20(最小%20Wear) –

回答

1

請求的charset我已經清除了很多誤導性垃圾出的代碼來解決問題的核心。

現在這地再現了原作的問題:

var request = require('request'); 

getItemPrice("StatTrak™ UMP-45 | Delusion (Minimal Wear)") 

function getItemPrice(market_hash_name, callback) { 
    var url = "http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=" + market_hash_name; 

    request({ 
     url: url, 
     json: true 
    }, function(error, response, body) { 
     console.log(body); 
     if (!error && response.statusCode === 200) { 
      console.log(parseFloat(((body.lowest_price).replace(/\,/g, '.')).split('&')[0])); 
     } 
    }) 
} 

您的問題是什麼,你在呼喚是不是一個有效的URL,服務器被嚴重反應的。

必須特殊字符編碼成URL格式:

var url = "http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=" + 
    encodeURIComponent(market_hash_name); 
+0

是的,我也同時找到了解決方案哈哈:)但非常感謝您的幫助 –

-1

你叫什麼樣的REST API的?如果它的節點JS API,你可以設置的字符集有

var req = http.request(options, function(res) { 
    console.log('STATUS: ' + res.statusCode); 
    console.log('HEADERS: ' + JSON.stringify(res.headers)); 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
    console.log('BODY: ' + chunk); 
    }); 
}); 

如果不是的話,這樣設置

request.setHeader('Accept-Charset', 'UTF-8)