2017-05-26 26 views
0

我試圖通過節點js發送HTTP POST請求。發送變量以在請求中形成參數HTTP POST節點js

這裏是我的代碼:

var tentativa = "{ id:'" + result.rows[i][0] + "', timestamp:'" + result.rows[i][1]+"', application: '"+ applicationName + 
       "', type:'Log', source: '" + result.rows[i][2] + "', " + string+ " }"; 

      request({ 
       uri: "http://localhost:5000/logs", 
       method: "POST", 
       form: tentativa, 
       headers: { 'Content-Type' : 'application/x-www-form-urlencoded' } 
       }, function(error, response, body) { 
       console.log(body); 

      }); 

當我送「tentativa」變量的形式,請求其派出,但沒有任何保存。但是當我發送「tentativa」變量的輸出時,它工作正常。它不應該一樣嗎?

+0

'form'屬性應該可能只是一個普通的JavaScript對象,而不是對象的字符串表示。 'request'庫會將它轉換爲你並正確地將其編碼到HTTP請求中。 – varbrad

+0

「...請求拋出Node.js」你的意思是node.js拋出一個錯誤?什麼是錯誤? – borislemke

+0

@borislemke它不是扔是通過。對錯誤感到抱歉 –

回答

0

這不是一個有效的JSON

var tentativa = "{ id:'" + result.rows[i][0] + "', timestamp:'" + result.rows[i][1]+"', application: '"+ applicationName + 
       "', type:'Log', source: '" + result.rows[i][2] + "', " + string+ " }"; 

的最後一個值錯過關鍵屬性,這可能是爲什麼它不與請求一起發送的對象。

既然看起來你想發送一個普通的json,你可以把對象放在body中。

request({ 
    uri: "http://localhost:5000/logs", 
    method: "POST", 
    body: tentativa, 
    json: true, 
    headers: { "Content-Type": "application/json"} 
    } 

    }, function(error, response, body) { 
     console.log(body); 

    }); 
0

非常感謝您的幫助。 使用javascript對象而不是該字符串解決了問題,就像@varbrad所說的那樣。