2017-07-27 30 views
0

我有node.js中的Content-Type的身體解析器不好解釋:X WWW的形式,進行了urlencoded和表格數據JSON

Content-type: Content-Type:application/x-www-form-urlencoded; charset=UTF-8 

的和形狀的數據是這樣的(JSON)客戶端請求:

{"jsonrpc":"2.0","method":"print","params":{"id":"lp0","doc":"<section> 
<p>&nbsp;sitedemo&nbsp;&nbsp;&nbsp;&nbsp;</p><br><barcode>     CLODGCGMM      
</barcode><br><br><hr><drawer></drawer><br></section>"},"id":1501151330950} 

Node.js的服務器使用身體的解析器中間件是這樣的:

app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

一個執行console.log(request.body)給我的東西是這樣的:

{ '{"jsonrpc":"2.0","method":"print","params":{"id":"lp0","doc":"<section> 
<p>': '', 
'nbsp;': '', 
'nbsp;sitedemo': '', 
'nbsp;':'', 
'&nbsp;</p><br><barcode>':'' 
'.......}'} 

一個json對象被構建爲具有由行和值構成的鍵null。

我如何可以檢索通過客戶端發送的確切對象(我沒有訪問客戶端)

謝謝。

+0

「我有客戶無法訪問」 - 客戶機壞了。你不應該迎合他們的錯誤。堅持他們解決這個問題。 – Quentin

回答

1

客戶端在頭文件中聲明請求正文是URL編碼的,但它正在發送JSON時發生中斷。

如果確實是這種情況,則需要防止這些請求被body-parser解碼,然後手動進行解碼。

取而代之的是:

app.use(bodyParser.urlencoded({ extended: true })); 

試試這個:

app.use(
    bodyParser.raw({ type : 'application/x-www-form-urlencoded' }), 
    function(req, res, next) { 
    try { 
     req.body = JSON.parse(req.body) 
    } catch(e) { 
     req.body = require('qs').parse(req.body.toString()); 
    } 
    next(); 
    } 
); 
相關問題