2017-09-05 12 views
0

NodeJSにHTTPClientを使用して2つのパラメータを送信するPOSTリクエストを作成しようとしています。POSTリクエストでパラメータが空です

var HTTPClient = require('httpclient') 

var options = { 
    hostname: 'localhost', 
    path: '/', 
    port: 8081, 
    secure: false, 
    method: 'POST', 
    headers: { 
     'x-powered-by': 'HTTPClient.js' 
    }, 
    'Content-Type': 'application/x-www-form-urlencoded', 
    params:{ 
     command:'TEST', 
     param1:'TEST' 
    } 
} 

var example1 = new HTTPClient(options) 
example1.post('/executeGraph1', function (err, res, body) { 
    console.log(typeof body,body); 
}) 

それから私は私が'Content-Type': 'application/x-www-form-urlencoded'app.use(bodyParser.urlencoded({extended: true}));を使用しますが、私は続けるevrery時間は空の変数を取得するような他の問題の解決策を試してみましたPOSTリクエスト

var express = require('express'); 
var app = express(); 
var path = require('path'); 
var bodyParser = require('body-parser'); 

// configure the app to use bodyParser() 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 
app.use(bodyParser.json()); 
app.use(express.static(path.join(__dirname, ''))); 

app.post('/executeGraph1', function (req, res) { 
    console.log("Got a POST request for grahBar"); 

    console.log("params",req.params); 
    console.log("body",req.body); 
    console.log("query",req.query); 
}) 

var server = app.listen(8081, function() { 

    var host = server.address().address 
    var port = server.address().port 

    console.log("Example app listening at http://%s:%s", host, port) 
}) 

をキャッチするためにExpressを使用しています。私はプロパティ本体、params、またはqueryを探してみましたが、3つのオプションはすべて空の配列です

ここで何が間違っているのですか?

+0

あなたの 'Content-Type' - >' 'Content-Type': 'application/x-www-form-urlencoded''を '' Content-Type': 'application/json'に変更してください。 – swapnesh

+0

@swapnesh Iすでに試してみましたが、結果は同じです:( –

答えて

2

お使いのサーバーのコードは大丈夫です、req.queryはクエリパラメータが含まれていますが、あなたのルートの文字列が例えば/res1/:param1/res2/:param2/:param3ため:が付いよりのparamsがあるかもしれないこと/executeGraph1/:paramNameのように定義されているときreq.paramsが使用されています。

私は

example1.post('/executeGraph1?queryParamName=value', function (err, res, body) { 
    console.log(typeof body,body); 
    }) 

も働くあなたのオプションの変数にqueryparamsの交換例えば、要求URLの作品にクエリ文字列を追加し、HTTPClientのモジュールを使用していないAltough。

代わりにhttps://github.com/request/requestを使用することをおすすめします。

POSTハンドラの最後の1つが最後の行として追加されますres.end()これをしないとリクエストがハングしてタイムアウトするのを待ちます。 endは、クライアントに送信される引数を取ることがあります。

関連する問題